我對配置Visual Studio(2010)感興趣,因此在部署C#CLR數據庫項目時,它將東西放入DBO以外的架構中。我知道我可以更新它手動創建的函數/過程/ etc ... wrappers以實現此目的: CLR Stored Procedures: how to set the schema/owner?部署期間CLR存儲過程的架構
但是,我真的很想自動化該過程。如果有人知道,我真的很感激答案!
我對配置Visual Studio(2010)感興趣,因此在部署C#CLR數據庫項目時,它將東西放入DBO以外的架構中。我知道我可以更新它手動創建的函數/過程/ etc ... wrappers以實現此目的: CLR Stored Procedures: how to set the schema/owner?部署期間CLR存儲過程的架構
但是,我真的很想自動化該過程。如果有人知道,我真的很感激答案!
您可以從一個架構使用更改存儲過程到另一個
ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany
它似乎是安全相關的,並通過設計完成。 http://support.microsoft.com/kb/918346
您可以像下面那樣爲後置部署腳本中的每個對象放置腳本。下面的腳本使用模式[Org]重新創建存儲過程。希望這可以幫助。
第1步 - 刪除項目自動添加的存儲過程,因爲它是使用默認模式[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
第2步 - 刪除已存在[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
這整個事情可以簡化爲一行:ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany。任何與該DLL關聯的對象在部署之前都必須放棄,因爲它們依賴於該DLL。 – Griffin 2012-03-14 00:36:47
我原本希望在Visuatl Studio中會有一個配置Schema的地方,但我從未找到過。這是我們採取的方法...前後部署腳本。 – 2012-06-27 18:42:28
應該提到的是,這個問題是過時,因爲它有一個「默認模式」配置字段中的Visual Studio 2012的生成的T-SQL包裝器對象。這也被「更新」一節中指出,在下面的答案頂部;-):
我說的是,當你用鼠標右鍵單擊在Visual一個SQL CLR項目發生了什麼Studio並點擊「部署」。它將您的程序集放入SQL Server中,然後生成調用裝配方法的T-SQL包裝函數和存儲過程。據我所知,這些包裝總是進入dbo模式。爲了組織的目的,我想將它們放在一個單獨的模式中。到目前爲止,我所管理的最好的方法是手動編輯項目中的部署前和部署後的SQL腳本,以刪除並重新創建我希望它們的Schema中的項目,但這是每個項目的手動過程。 – 2011-01-04 18:45:49