我知道在 Oracle DB 中我可以配置一个标志,即在特定 DB 上运行的所有选择查询都可以像NOLOCK
添加了提示一样运行。SQL Server 中有类似的东西吗?
问问题
312 次
3 回答
3
您可以将数据库设置为READ_ONLY模式,这肯定会更改一些事务规则,但我认为没有更接近全局 NOLOCK 的方法。
编辑
如果您希望能够执行 DELETE、INSERT 和 UPDATE,但不希望读者锁定或必须指定提示或隔离级别,您也可以考虑打开READ_COMMITTED_SNAPSHOT,但语义又不太一样作为 NOLOCK 提示。
于 2010-08-17T06:54:35.367 回答
1
不在每个数据库级别。您只能使用提示或set transaction isolation level
. 您可以将数据库设置为只读模式,默认情况下可能会产生这种效果,但会(顾名思义)阻止写入数据库。
这对于定期刷新的数据库可能很有用。您将数据库设置为只读并将其设置为可写以进行更新,然后返回只读。
于 2010-08-17T06:53:09.780 回答
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
ETC
于 2010-08-17T07:00:33.060 回答