我知道在Oracle数据库中,我可以配置一个标志,即可以运行在特定DB上运行的所有选择查询,就像添加了NOLOCK
提示一样。 SQL Server中是否有类似的东西?SQL Server中的服务器端NOLOCK
0
A
回答
3
您可以将数据库设置为READ_ONLY模式,这肯定会更改某些事务规则,但我认为没有更接近全局NOLOCK的东西。
编辑
如果你希望能够进行删除,插入和更新,但你不希望读者锁定或必须指定提示或隔离级别,你也可以考虑开启READ_COMMITTED_SNAPSHOT ,但是这里的语义和NOLOCK提示不太一样。
1
不在每个数据库级别。你只能用提示或set transaction isolation level
来做。您可以将数据库设置为只读模式,默认情况下可能具有该效果,但会(如名称所示)阻止写入数据库。
这对于定期刷新的数据库可能很有用。您将数据库设置为只读,并将其设置为可写入更新,然后回到只读状态。
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
等
在读模式下设置DB不会允许我进行删除和插入。 这是否意味着我必须为所有“选择”创建一个只读副本? – Sarit 2010-08-17 06:58:48