我刚刚将我的 ERP 数据库服务器从 SQL Server 2000 迁移到 SQL Server 2008 R2(均为企业版)并且迁移进行得相当顺利。
但是,现在我正在尝试重新创建从 ERP 到报告环境的复制,我有两个出版物正在尝试创建一系列MSFixupNonUniqueIndex_{{datetimestamp}}
非唯一索引。创建这些索引的进程都在休眠,但它们正在阻塞最终用户正在运行的其他 SQL 进程。
是什么导致了这个修复索引的创建,我可以避免它吗?
- 使用
sp_whoisactive
there nowait_info
来创建索引任务。 - 我没有在报告环境中删除复制的数据库。
- “报告环境”也是 SQL Server 2008 R2 Enterprise。
- 现在是 2008 R2 到 2008 R2 的复制。
sysprocesses
显示试图创建索引的 spid 阻止的两个过程。spid 本身有一个waittype
of0x0000
和一个lastwaittype
ofMISCELLANEOUS
。sys.locks
显示有 777 个锁:7 个 Intent,761 个 Exclusive,6 个 Shared,2 个 Schema Mod,1 个 Schema Stability。资源是: 1ALLOCATION_UNIT
、 9OBJECT
、 3DATABASE
、 2METADATA
、 677PAGE
、 11KEY
、 1HOBT
、 73EXTENT
。select * from sysprocesses where open_tran > 0
确实通过一个打开的事务返回 spidDBCC OPENTRAN
没有未结交易。MAXDOP
未配置
如果复制自动创建索引,那么您可能无法避免它。这样做的唯一方法可能是在订阅者上创建匹配索引。
尝试使用更详细的日志记录级别从命令行运行合并代理并查看它返回的信息。它可能会碰到一些没有作为错误返回的东西。
确保您的订阅数据库是新的。如果您使用新数据库进行订阅,问题将得到解决。这对我有用。