1

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

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

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

4

2 回答 2

3

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

SELECT ... FROM MySchema.MyTable WITH (NOLOCK)仍然需要Sch-S锁定。根据Lock Compatibility (Database Engine)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)现在,你必须等待。

于 2013-05-02T15:17:54.830 回答
1

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

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

于 2013-05-02T14:35:46.683 回答