强制SQL Server缓慢响应,以测试客户端应用程序对超时的响应



是否有可能以某种方式强制Microsoft SQL Server减慢某些或所有查询,以便我们可以测试客户端应用程序在SQL查询长时间运行时的行为?例如,严格限制其I/O或CPU为1%。

不幸的是,不能修改数据库中的数据来添加更多的行。

我尝试在SQL Server中强制查询超时,但不幸的是,客户端应用程序问题SELECT WITH (NOLOCK),因此它忽略了我们创建的任何锁。

强制SELECT ... FROM MySchema.MyTable WITH (NOLOCK)查询超时错误:

SELECT ... FROM MySchema.MyTable WITH (NOLOCK)仍然需要Sch-S锁。根据锁兼容性(数据库引擎),Sch-S锁与Sch-M锁有冲突。

因此,在SSMS中创建一个新的查询并执行下一个脚本:
BEGIN TRAN
ALTER TABLE MySchema.MyTable
ADD DummyCol INT NULL DEFAULT 0 -- It requires Sch-M lock
--ROLLBACK
2)使用NOLOCK表提示执行查询(从客户端应用程序或从另一个SSMS查询):
SELECT  *
FROM    MySchema.MyTable d WITH(NOLOCK) -- It requires Sch-S lock

如果使用存储过程,则使用WAITFOR DELAY来使代码等待。

控制CPU需要资源调控器,但我没有使用它。IIRC要求企业版

最新更新