Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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中使用nolock更改视图?_Sql Server - Fatal编程技术网

Sql server 是否可以在SQL Server中使用nolock更改视图?

Sql server 是否可以在SQL Server中使用nolock更改视图?,sql-server,Sql Server,是否允许使用nolock更改视图?如果是,如果我想,我应该如何使用它 ALTER VIEW dbo.xx_view AS SELECT * FROM dbo.yy 我当前的问题是,我必须等待其他人完成使用dbo.xx_视图,然后才能更改视图。是否有一种方法可以强制更改视图,即使其他人正在对其进行查询。您可以像任何其他select语句一样指定它: ALTER VIEW dbo.xx_view AS SELECT * FROM dbo.yy WITH (NOLOCK) 或者,

是否允许使用nolock更改视图?如果是,如果我想,我应该如何使用它

ALTER VIEW dbo.xx_view 
AS
    SELECT * 
    FROM dbo.yy

我当前的问题是,我必须等待其他人完成使用
dbo.xx_视图
,然后才能更改视图。是否有一种方法可以强制更改视图,即使其他人正在对其进行查询。

您可以像任何其他select语句一样指定它:

ALTER VIEW dbo.xx_view AS
SELECT * FROM dbo.yy WITH (NOLOCK)
或者,您可以按照建议在查询视图时提供NOLOCK提示:


在后一种情况下,视图中的查询不需要提供NOLOCK提示。

NOLOCK与“锁定”视图定义无关。“查询提示”恰好是SQL世界中更普遍、更持久的坏习惯之一。这里有几篇文章可以让你了解最新情况。。。还可以说提示实际上是在禁用优化器的选项。微软在他们的文档页面上煞费苦心地强调,他们是专业DBA的最后手段。另外,请理解,除非这是一个物化视图,否则视图是硬编码查询。这很有道理,在用户完成之前,您将无法修改它们,因为这需要在执行查询时使正在使用的sql计划无效。您好,Nisarg,谢谢您的回复!我正在考虑是否可以在其他人使用dbo.xx_视图时更改视图dbo.xx_视图。目前的问题是,我必须等到他们使用完dbo.xx_视图之后,才能更改视图。我在想一些或多或少是
alterview dbo.xx_VIEW和(NOLOCK)as SELECT*FROM dbo.yy
的东西,这是不起作用的…我从来没有遇到过这样的问题。如果你试图修改它,你会有错误吗?没有,没有错误。该进程只是挂起,等待另一个进程完成。
 SELECT * FROM dbo.xx_view WITH (NOLOCK)