سؤال

أنا مهتم بتكوين Visual Studio (2010) بحيث عند نشر مشاريع قاعدة بيانات C# CLR ، فإنه يضع الأشياء في مخططات أخرى غير DBO. أتفهم أنه يمكنني تحديث الوظيفة/الإجراء/إلخ ... الأغطية التي تنشئها يدويًا لتحقيق ذلك:الإجراءات المخزنة CLR: كيفية ضبط المخطط/المالك؟

ومع ذلك ، أود حقًا أتمتة العملية بطريقة أو بأخرى. إذا كان أي شخص يعلم ، سأقدر حقًا الإجابة!

هل كانت مفيدة؟

المحلول

تجدر الإشارة إلى أن هذا السؤال عفا عليه الزمن في Visual Studio 2012 والذي يحتوي على حقل تكوين "مخطط افتراضي" لكائنات Wrapper T-SQL التي تم إنشاؤها. وقد لوحظ هذا أيضًا في قسم "التحديث" في الجزء العلوي من الإجابة التالية ;-) :

الإجراءات المخزنة CLR: كيفية ضبط المخطط/المالك؟

نصائح أخرى

يمكنك تغيير الإجراء المخزن من مخطط إلى آخر باستخدام

ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany

يبدو أنه مرتبط بالأمان ويتم "حسب التصميم". http://support.microsoft.com/kb/918346

يمكنك وضع البرامج النصية لكل كائن في نص النشر بعد النشر كما هو موضح أدناه. أسفل البرنامج النصي إعادة خلق الإجراء المخزنة مع المخطط [org]. أتمنى أن يساعدك هذا.

Step1 - قم بإزالة الإجراء المخزّن تلقائيًا بواسطة Project نظرًا لأنه يتم إنشاؤه باستخدام المخطط الافتراضي [DBO].

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[spUpdateCompany]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[spUpdateCompany]
GO

Step2 - قم بإزالة الإجراء المخزن إذا كان موجودًا بالفعل في مخطط [ORG] وإعادة إنشاء الإجراء المخزن في مخطط [org].

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Org].[spUpdateCompany]') AND type in (N'P', N'PC'))
DROP PROCEDURE [Org].[spUpdateCompany]
GO



CREATE PROCEDURE [Org].[spUpdateCompany]
    @Id int,
    @Name [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [SQLServerProject.CLR].[StoredProcedures].[spUpdateCompany]
GO

في خصائص SQLCLR لمشروع SSDT ، يمكنك إيقاف "إنشاء DDL". ثم يمكنك إنشاء كائن SQL الخاص بك الذي يعلق على مجموعة CLR. على سبيل المثال ، أضف إجراءً جديدًا جديدًا

CREATE PROCEDURE [schema].[StoredProcedure] @parameter BIGINT NULL AS EXTERNAL NAME [AssemblyNameFromProjectProperties].[ClassWithProcedure].[Method]; GO

سيتيح لك ذلك وضع كائنات مختلفة في مخططات مختلفة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top