相关疑难解决方法(0)

SET NOCOUNT 升级后处理 SQL 调用时出错

我们正在使用新服务器和更新版本的 Microsoft SQL Server 升级我们的测试环境,但遇到了问题。

在新服务器上,我们的旧代码在执行某些存储过程时会出现“对象关闭时不允许操作”。此消息从未出现在旧服务器上。当我们追踪到它时,可以通过添加SET NOCOUNT ON;到存储过程来解决问题。

我查看了数据库上的默认值,没有看到与默认值相关的不同设置(SQL Server 2008 与 SQL Server 2014)。

我应该查看什么设置来全局解决此问题,而无需添加SET NOCOUNT ON到一千个存储过程?

sql-server-2008 sql-server sql-server-2014 sp-configure

13
推荐指数
1
解决办法
530
查看次数

积极的索引不足和缺失索引的数据

我知道我的数据库上有很多阻塞,并已尽力按供应商进行排序,因为他们支持此应用程序并且尚未产生任何成功的结果。时不时,我们会遇到阻塞问题,这种阻塞变得如此严重,而且他们的设计非常糟糕,以至于整个门户都会关闭,除非我杀死少数持有排他锁的 SPID(大部分)。

我已经使用 sp_blitzindex 近一年了,并且是 Brent Ozar 先生和团队提供的 First Responder Kit 的忠实粉丝。当我对这个发生阻塞的数据库执行 sp_blitzindex 时,它说 - “积极的索引不足:总锁定等待时间 > 5 分钟(行 + 页),平均等待时间长”,优先级为 10。我检查了URL列并还检查了其他相关页面,但无法获得太多帮助。

我知道此处列出的表已编入索引,并且需要创建更多索引,但是当我使用以下命令在表级别为这些对象分别运行相同的过程即 sp_blitzindex 时:

EXEC dbo.sp_BlitzIndex @DatabaseName='db1', @SchemaName='sch', @TableName='tab1';
Run Code Online (Sandbox Code Playgroud)

我根本没有得到任何丢失的索引详细信息。所有现有索引都被利用并且读取计数小于写入计数,只有这里突出显示的问题在主键的“锁定等待”列中。

我不知道需要创建哪个列索引。我还检查了 sp_blitzlock 以查看是否可以收集更多信息,这会有所帮助,但是我看到有很多死锁并且列出了相同的对象,这些对象在积极索引不足中被计算出来。

还通过在此特定数据库中将排序顺序作为“读取”和“持续时间”传递来检查 sp_blitzcache 的输出,但没有丢失索引请求。有警告说“未参数化查询”和“未参数化查询,非 SARGables”,这些计划涉及不同的表集。

任何帮助都受到高度赞赏。

Version: Microsoft SQL Server 2014 (SP3) (KB4022619) - 12.0.6024.0 (X64) Sep 7 2018 01:37:51 Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 (Build 9600: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)

index sql-server blocking sp-blitzindex

3
推荐指数
1
解决办法
1278
查看次数