我有一个SQL Server数据库(2008),其中我有一些SQL用于各种事情的CLR DLL。
使用SQL镜像时是否镜像了这些DLL?我们的DBA没有说,但我觉得这很疯狂,在网上找不到太多的信息。
是否可以镜像CLR DLL?
答案 0 :(得分:4)
CLR程序集存储在数据库中,并作为数据库的一部分进行镜像。每个数据库都有自己的sys.assemblies视图,如果查询master.sys.assemblies DMV,则无法在DMV中找到其他数据库的程序集。在镜像中包含程序集的数据库时,可能会遇到一些问题。第一种情况是,如果您有外部访问或UNSAFE程序集并且您使用TRUSTWORTY位来允许数据库中的程序集,则在故障转移的恢复过程中会禁用此功能,因此您必须重新启用它。如果使用证书对程序集进行了签名,则必须手动创建与镜像服务器上的程序集关联的证书和登录名,因为它存储在master中,而不是存储在数据库中。大会将在那里,你的SQL数据库对象也将存在,但它可能无法运行。您可能还需要将数据库所有者名称更改为故障转移的一部分。
如果要验证上述内容,请使用程序集备份用户数据库,然后将其还原到另一台服务器。您的程序集将成为数据库的一部分。
答案 1 :(得分:1)
只是为Jonathan所说的添加明显的观点:您的程序集必须部署在镜像应用程序数据库中,而不是msdb或其他数据库中。