مخطط الإجراء المخزن CLR أثناء النشر
-
29-09-2019 - |
سؤال
أنا مهتم بتكوين Visual Studio (2010) بحيث عند نشر مشاريع قاعدة بيانات C# CLR ، فإنه يضع الأشياء في مخططات أخرى غير DBO. أتفهم أنه يمكنني تحديث الوظيفة/الإجراء/إلخ ... الأغطية التي تنشئها يدويًا لتحقيق ذلك:الإجراءات المخزنة CLR: كيفية ضبط المخطط/المالك؟
ومع ذلك ، أود حقًا أتمتة العملية بطريقة أو بأخرى. إذا كان أي شخص يعلم ، سأقدر حقًا الإجابة!
المحلول
تجدر الإشارة إلى أن هذا السؤال عفا عليه الزمن في Visual Studio 2012 والذي يحتوي على حقل تكوين "مخطط افتراضي" لكائنات Wrapper T-SQL التي تم إنشاؤها. وقد لوحظ هذا أيضًا في قسم "التحديث" في الجزء العلوي من الإجابة التالية ;-) :
نصائح أخرى
يمكنك تغيير الإجراء المخزن من مخطط إلى آخر باستخدام
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
سيتيح لك ذلك وضع كائنات مختلفة في مخططات مختلفة