将已发布的复制数据库的数据库兼容性级别从90更改为100的影响


11

我有一台SQL Server 2008 R2服务器,其中有一堆已发布的数据库,这些数据库当前在兼容级别90(2005)下运行。

订阅数据库也是SQL Server 2008 R2,但是目标数据库设置为兼容性级别100,并且复制工作正常。

如果更改发布数据库的兼容性级别,它将以任何方式影响复制,还是只是重新初始化所有订阅并重新启动复制的情况?

我怀疑更改已发布的数据库兼容性级别可能会稍微更改复制存储过程的功能,但是我不确定100%。

是这样吗


有趣的问题,但是这些数据库是否需要更改其兼容级别?如果一切正常,我可能就别
管它了

我要更改它们的主要原因是,数据库和它们所位于的服务器刚刚从单节点2005机箱升级到多节点2008R2集群。此外,还有其他一些我想开始使用的功能(例如MERGE等)。
鲍勃

1
您可能想阅读有关兼容性级别的问题:dba.stackexchange.com/questions/5166/…–
Jon Seigel

文明的终结。猫和狗在一起生活。集体歇斯底里。我还应该提到,这可能会导致政府关闭。但是,您似乎对此一无所知。
swasheck

Answers:


4

您可以按照以下步骤操作:

  • 确保该数据库的日志读取器代理程序正在运行。默认情况下,代理会连续运行。
  • 停止发布表上的用户活动。
  • 留出时间让Log Reader代理将事务复制到分发数据库,​​然后停止该代理。
  • 执行sp_replcmds以验证是否已处理所有事务。此过程的结果集应为空。
  • 执行sp_replflush以关闭来自sp_replcmds的连接。
  • 更改数据库的兼容性级别
  • 启动日志读取器代理。

我有一个非常相似的设置,并希望做同样的事情,但是我的分发数据库也处于90兼容模式。据我了解,发行商不能像发行商那样在较低的兼容性模式下运行。那么,操作顺序是在关闭日志阅读器之后,在“更改(已发布的)数据库的兼容性级别”之前简单地插入“更改分发服务器的兼容性级别”吗?
排队曼

@QueueMann "Change compatibility level of distributor" before "Change the compatibility level of the (published) database"是正确的。分发数据库应与发布服务器具有相同或更高的兼容性级别。发布者可以处于与发布者相同或更低的级别。
Kin Shah

2

我们这样做是为了安全起见,我们停止了复制该数据库,更改了兼容性级别,然后重新初始化。我们没有发生任何问题。这是一个很小的出版物,只订阅了一个数据库。我认为随着您的复制方案变得越来越复杂,这可能会变得更加困难。(即,订阅数据库以从许多数据库中获取发布信息,等等)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.