对象 '[sp_name]' 的定义已更改,因为它是在故障转移时编译到镜像数据库

QFD*_*Dev 6 sql-server mirroring sql-server-2012 failover

我们在镜像中配置了两台 SQL 2012 数据库服务器,并带有用于自动故障转移的见证。

昨天主服务器遭遇硬盘降级,触发了故障转移,但是当辅助服务器成为原则时,我们开始看到一些 SPROC 执行时出现许多错误。

对象 '[sp_name]' 的定义自编译后已更改

我知道这可以通过运行sp_recompile新原则来解决,这将强制对所有 SPROC、函数和触发器进行重新编译。

这并不理想,因为它需要对故障转移进行手动干预。这是我可以通过修改配置解决的问题,还是已知的 SQL Server 错误?

CR2*_*241 1

您使用的是哪个 SQL 版本?有时,引擎无法引用元数据目录,从而导致此类错误。这被确定为一个错误。但您有解决方法来解决此问题。如果您可以在下次运行时重新编译存储过程,请使用sp_recompile.

下面讨论编译和重新编译的细节。

重新编译存储过程

更新 SSMS 中的存储过程并执行调用该过程的单独应用程序。您需要结束正在编辑过程的会话。更改仅在编辑会话中可见,直到提交为止。

检查下面的链接:

对象“name”的定义自编译以来已更改