【问题标题】:Are CLR DLLs mirrored when using SQL Server Mirroring?使用 SQL Server 镜像时是否会镜像 CLR DLL?
【发布时间】:2009-07-13 11:12:06
【问题描述】:

我有一个 SQL Server 数据库 (2008),其中有一些 SQL 用于各种事情的 CLR DLL。

当我使用 SQL 镜像时,这些 DLL 是否被镜像?我们的 DBA 说没有,但我觉得这很疯狂,在网上找不到太多关于它的信息。

是否可以镜像 CLR DLL?

【问题讨论】:

    标签: sql-server backup clr mirroring dll


    【解决方案1】:

    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

    如果您想验证我上面所说的话,请备份带有程序集的用户数据库,然后将其还原到另一台服务器。您的程序集将成为数据库的一部分。

    【讨论】:

      【解决方案2】:

      为了给 Jonathan 所说的添加一个明显的点:您的程序集必须部署在镜像应用程序数据库中,而不是在 msdb 或其他数据库中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-15
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多