2010-08-17 59 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