2009-07-13 73 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或其他数据库中。