2010-08-17 41 views
0

我知道在Oracle数据库中,我可以配置一个标志,即可以运行在特定DB上运行的所有选择查询,就像添加了NOLOCK提示一样。 SQL Server中是否有类似的东西?SQL Server中的服务器端NOLOCK

回答

3

您可以将数据库设置为READ_ONLY模式,这肯定会更改某些事务规则,但我认为没有更接近全局NOLOCK的东西。

编辑

如果你希望能够进行删除,插入和更新,但你不希望读者锁定或必须指定提示或隔离级别,你也可以考虑开启READ_COMMITTED_SNAPSHOT ,但是这里的语义和NOLOCK提示不太一样。

1

不在每个数据库级别。你只能用提示或set transaction isolation level来做。您可以将数据库设置为只读模式,默认情况下可能具有该效果,但会(如名称所示)阻止写入数据库。

这对于定期刷新的数据库可能很有用。您将数据库设置为只读,并将其设置为可写入更新,然后回到只读状态。

+0

在读模式下设置DB不会允许我进行删除和插入。 这是否意味着我必须为所有“选择”创建一个只读副本? – Sarit 2010-08-17 06:58:48

0

不是针对整个数据库,但为你做的每个查询:

SELECT a, b 
FROM t1 
WITH (NOLOCK) 
WHERE t1.c = @value 

SELECT a, b 
JOIN t1 
ON t1.id = t2.id 
WITH (NOLOCK) 
FROM t2 
WHERE t2.c = @value 

相关问题