如何在SQL Server中模拟长时间运行的查询

7

我正在尝试模拟在mssql中运行长时间查询,以测试一些kill命令和清理操作。问题是,我无法找到一种方法来让查询长时间运行。这是我目前的做法:

select * from sales1 cross join sales2 cross join sales3 ...

查询会立即返回,但如果我执行cursor.fetchall(),获取结果需要很长时间。

在等待返回的同时,当我执行以下操作:

cursor.execute("sp_who2 'active'")

它没有显示查询(我猜是因为它已经“执行”了)。

有没有一种方法可以使用只有100个结果的一个表来模拟长时间运行的查询?


3
开始一个事务,运行查询,不要提交事务。 - Mitch Wheat
@MitchWheat 也许我误解了,但如果我这样做,我会得到相同的结果:>>> cursor.execute('begin transaction') >>> cursor.execute('select * from sales cross join sales2 cross join sales3')。不过也许(Python)连接包装器会在其周围执行一些操作... - David542
2个回答


3
在我的公司中,我们会收到用户(甚至包括DBA)在开放事务(OPEN TRAN)/长查询(LONG QUERY)时发送的警报。
因此,是的,没有进行提交(COMMIT)/回滚(ROLLBACK)开放事务(OPEN TRAN)会造成这种情况,或者使用WAITFOR DELAY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接