2009-07-13 80 views
3

我有一個SQL Server數據庫(2008年),其中我有一些CLR DLL,SQL用於各種事情。使用SQL Server鏡像時是否鏡像CLR DLL?

當我使用SQL鏡像時,這些DLL是否被鏡像?我們的DBA不說,但我覺得這很瘋狂,在網上找不到很多信息。

是否可以鏡像CLR DLL?

回答

4

CLR程序集存儲在數據庫中,並作爲數據庫的一部分進行鏡像。每個數據庫都有自己的sys.assemblies視圖,如果您查詢master.sys.assemblies DMV,則不會在DMV中找到其他數據庫的程序集。有可能遇到的問題是鏡像的數據庫中有程序集。首先,如果您有外部訪問或UNSAFE程序集,並且您使用TRUSTWORTY位允許數據庫中的程序集,則在故障切換時恢復過程中將禁用此程序集,因此您必須重新啓用它。如果您使用證書籤署程序集,則必須手動創建與鏡像服務器上的程序集關聯的證書和登錄名,因爲它存儲在主數據庫中,而不是數據庫中。大會將在那裏,您的SQL數據庫對象也會在那裏,但它可能無法正常工作。您可能還需要將數據庫所有者名稱更改爲故障轉移的一部分。

http://sqlblog.com/blogs/jonathan_kehayias/archive/2008/03/06/clr-safety-issues-after-database-restore-to-new-server.aspx

如果您想驗證我上面說的,備份與它的配件的用戶數據庫,並將其恢復到另一臺服務器。你的程序集將成爲數據庫的一部分。

1

只是爲了向Jonathan所說的添加明顯的一點:您的程序集必須部署在鏡像應用程序數據庫中,而不是部署在msdb或其他數據庫中。