Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何创建慢速视图?_Sql Server_Performance_Sql Server 2012_Query Performance - Fatal编程技术网

Sql server 如何创建慢速视图?

Sql server 如何创建慢速视图?,sql-server,performance,sql-server-2012,query-performance,Sql Server,Performance,Sql Server 2012,Query Performance,我想测试我的MS Access应用程序(使用链接表)的超时行为。使用慢速数据库查询将非常方便。如果可能,即使使用预定义的查询持续时间 我试过这个: CREATE VIEW slow_view AS WAITFOR DELAY '00:01:05' SELECT 1 AS one 但是在tsql视图定义中不允许使用WAITFOR 如何在SQL Server中创建导致超时的慢速数据库视图?一个选项是锁定表。 在SSMS或其他工具中,使用begin事务执行查询,但不包括commit或rollback

我想测试我的MS Access应用程序(使用链接表)的超时行为。使用慢速数据库查询将非常方便。如果可能,即使使用预定义的查询持续时间

我试过这个:

CREATE VIEW slow_view AS
WAITFOR DELAY '00:01:05'
SELECT 1 AS one
但是在tsql视图定义中不允许使用
WAITFOR


如何在SQL Server中创建导致超时的慢速数据库视图?

一个选项是锁定表。 在SSMS或其他工具中,使用begin事务执行查询,但不包括commit或rollback

BEGIN TRAN

SELECT *
FROM MyTable with(tablockx)

然后尝试从不同会话访问同一个表,它将等待事务完成/回滚

在SSMS中,左侧是锁定查询,右侧是阻塞查询。


要停止阻塞查询,您可以在锁定查询会话中执行
COMMIT
,方法是选择
COMMIT
并执行它F5。

A
VIEW
只是一个由
SELECT
定义的虚拟表。它不能有像
WAITFOR
这样的命令,它可以有一个单独的语句来生成
SELECT
。这听起来像是一个,但如果必须这样做,请使用不同的对象类型,如存储过程。@Larnu MS Access链接表只能是表或视图。存储过程是不可能的。超级方便,因为我可以在需要查询返回时手动定义。或者,您可以在选择之后放置一个
waitfordelay'00:01:05'回滚
,时间为预定义的持续时间。回滚大部分是单线程的,因此最好提交。对于这个语句来说,这无关紧要,因为事务日志保持不变,只是为了将来参考。