事务复制创建一个正在休眠但阻塞其他进程的修复索引

swa*_*eck 5 sql-server sql-server-2008-r2 transactional-replication

我刚刚将我的 ERP 数据库服务器从 SQL Server 2000 迁移到 SQL Server 2008 R2(两个企业版),迁移过程相当顺利。

但是,现在我正在尝试重新创建从 ERP 到 Reporting 环境的复制,我有两个出版物试图创建一系列MSFixupNonUniqueIndex_{{datetimestamp}}非唯一索引。创建这些索引的进程都在休眠,但它们正在阻塞最终用户正在运行的其他 SQL 进程。

是什么导致了这个修复索引的创建,我可以避免它吗?

  • 使用sp_whoisactivenowait_info用于索引创建任务。
  • 我没有在报告环境中删除复制的数据库。
  • “报表环境”也是 SQL Server 2008 R2 Enterprise。
  • 现在是 2008 R2 到 2008 R2 的复制。
  • sysprocesses显示了试图创建索引的 spid 阻止的两个过程。spid 本身有一个waittypeof0x0000和一个lastwaittypeof MISCELLANEOUS
  • sys.locks显示有 777 个锁:7 个 Intent,761 个 Exclusive,6 个 Shared,2 Schema Mod,1 Schema Stability。资源是: 1 ALLOCATION_UNIT、 9 OBJECT、 3 DATABASE、 2 METADATA、 677 PAGE、 11 KEY、 1 HOBT、 73 EXTENT
  • select * from sysprocesses where open_tran > 0 确实通过一个打开的事务返回 spid
  • DBCC OPENTRAN 没有未结交易。
  • MAXDOP 未配置

mrd*_*nny 1

如果复制会自动创建索引,那么您可能无法避免它。唯一的方法可能是在订阅者上创建匹配的索引。

尝试使用更详细的日志记录级别从命令行运行合并代理,并查看它返回哪些信息。它可能会遇到一些没有作为错误返回的东西。


归档时间:

查看次数:

515 次

最近记录:

8 年,2 月 前