2011-04-04 65 views
3

我們擁有用C#編寫的一些表值函數的數據庫。我有Visual Studio中的數據庫項目,我使用解決方案資源管理器中的「部署」操作。但是,當我想從開發數據庫服務器測試數據庫服務器時「改變」程序集和函數時,我必須手動(現在是半腳本化)拖放函數和程序集,然後創建程序集並創建函數。修改SQL Server中的程序集

在99%的情況下,我們不改變接口(函數名稱,列名稱,列類型等)。

如何改變程序集和相關函數/程序有一些簡單的方法嗎? 謝謝

回答

3

簡短的答案似乎是沒有其他辦法。

刪除並重新創建程序集和鏈接的函數是數據庫引擎驗證您的接口是否有效(以及有效引用)的唯一方法。

編輯

有關的元數據集和引用功能之間的關係存儲在sys.assembly_modules表:

SELECT *, OBJECT_NAME(OBJECT_ID) FROM sys.assembly_modules 

這是很容易產生的元數據的下降腳本:

DECLARE @assembly_name sysname 
SET @assembly_name = '<your assembly name>' 


SELECT 'drop function ' + OBJECT_NAME(OBJECT_ID) 
FROM sys.assemblies AS a 
JOIN sys.assembly_modules AS am 
ON am.assembly_id = a.assembly_id 
WHERE a.name = @assembly_name 

SELECT 'drop assembly ' + @assembly_name 

生成創建腳本非常困難,因爲有沒辦法知道接口是否已經改變,或者程序集dll要上傳的位置。

+0

我沒有問題重新創建,除非重新創建我必須手動。我搜索了一些方法,比如「ALTER ASSEMLBY ... blah_blah_blah ...」,它自動刪除並重新創建依賴對象。 – TcKs 2011-04-04 14:39:32

+0

@TcKs - 我不確定你的意思 - 你正在尋找一個腳本來刪除和創建程序集? – 2011-04-04 14:40:55

+0

我不確定我應該搜索什麼。然而,根據程序集查找所有對象的腳本放棄它們,刪除程序集,創建新的程序集並創建依賴對象對於我的目的來說真的很棒,而且足夠了。 – TcKs 2011-04-04 14:49:14