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

时间:2013-05-02 14:34:20

标签: sql-server

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

不幸的是,无法修改数据库中的数据以添加更多行。

我尝试Forcing a query timeout in SQL Server但不幸的是客户端应用程序发出SELECT WITH (NOLOCK)因此忽略了我们创建的任何锁。

2 个答案:

答案 0 :(得分:3)

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

SELECT ... FROM MySchema.MyTable WITH (NOLOCK)仍然需要Sch-S锁定。根据{{​​3}},Sch-S锁定与Sch-M锁定存在冲突。

1)因此,在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

3)现在,你必须等待。

答案 1 :(得分:1)

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

控制CPU需要Resource Governer,但我没有使用它。 IIRC,它需要企业版