Sql server 通信缓冲区死锁:正在运行数据仓库存储过程的SQL Server 2008 R2

Sql server 通信缓冲区死锁:正在运行数据仓库存储过程的SQL Server 2008 R2,sql-server,ssis,sql-server-2008-r2,deadlock,Sql Server,Ssis,Sql Server 2008 R2,Deadlock,当前在64位Windows Server 2008 R2 Enterprise上运行SQL Server 2008 R2 SP1,该企业版安装在具有128 GB RAM和1TB内部SCSI驱动器的英特尔双8核处理器服务器上 自2011年以来,服务器一直在运行我们的数据仓库和分析服务包。此服务器和SQL实例不用于OLTP 突然,在没有任何警告的情况下,所有调用构建数据仓库表的SSIS包的作业(使用存储过程)都会失败,并出现“通信缓冲区死锁”错误。每次运行进程时,在包中生成错误的SP都不同 但是,如

当前在64位Windows Server 2008 R2 Enterprise上运行SQL Server 2008 R2 SP1,该企业版安装在具有128 GB RAM和1TB内部SCSI驱动器的英特尔双8核处理器服务器上

自2011年以来,服务器一直在运行我们的数据仓库和分析服务包。此服务器和SQL实例不用于OLTP

突然,在没有任何警告的情况下,所有调用构建数据仓库表的SSIS包的作业(使用存储过程)都会失败,并出现“通信缓冲区死锁”错误。每次运行进程时,在包中生成错误的SP都不同

但是,如果在作业启动时SQL Server Profiler正在运行以跟踪,则作业将正常运行

这最初发生在我们的开发服务器上(相同的配置),时间是6月份。与Microsoft的联系发现了磁盘I/O问题,并建议设置MaxDOP=8,这缓解了死锁问题,但引入了一个问题,即进程可能会以随机间隔占用高达3倍的时间

这是今天在我们的生产服务器上发生的。MaxDOP当前设置为零。在过去的一个月中,操作系统、SQL Server或SSIS包没有任何更改。作业在9月5日夜间正常运行,但在昨晚(9月6日)夜间因错误而失败,并在任何重试中继续失败


任何一个作业在失败之前运行的时间长度不一致,作业之间也不一致。以前需要2分钟运行才能完成的作业将在几秒钟内失败,而通常需要2小时的作业可能会在失败前30-90分钟内运行。

您是否考虑过更改数据库的隔离级别。当数据库上发生并行读写时,这会有所帮助

昨晚一夜之间失败并出现错误
-您能发布错误消息吗?另外,您是否检查了调度程序是否由于大型事务或长时间运行的查询或阻塞而导致排队工作过载?MaxDop为0=意味着它将使用所有可能导致线程不足的可用线程。此外,请检查服务器上的等待统计信息,这可能会为您指明正确的方向。您是否注意到服务器运行这些作业所花费的时间有任何增加?投票迁移到DBA.SE以便我们可以招募邪恶的聪明人您捕获了死锁图吗?您可能希望在通信缓冲区上启用它。
死锁
通常是(read always AFAIK)错误区域。通常的缓解措施是降低
MAXDOP
,直到它停止出现,同时尝试让您的Microsoft支持电话通过第一行,并转到有兴趣修复它的人。