如果要把SQL Server數據庫事務隔離級別設置為已提交讀快照隔離
如果直接運行下面的語句:
ALTER Database [mydbname] SET READ_COMMITTED_SNAPSHOT ON
會可能被阻塞很長時間。我這邊在正式環境測試過4個小時都沒有執行完。
你可以選擇運行下面的語句:
if(charindex('Microsoft SQL Server 2005',@@version) > 0) begin declare @sql varchar(8000) select @sql = ' ALTER DATABASE ' + DB_NAME() + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE ; ALTER DATABASE ' + DB_NAME() + ' SET READ_COMMITTED_SNAPSHOT ON; ALTER DATABASE ' + DB_NAME() + ' SET MULTI_USER;' Exec(@sql) end
經過測試腳本在1分鐘內執行完成。
過查詢 sys.databases的 is_read_committed_snapshot_on字段
select is_read_committed_snapshot_on from sys.databases where name = DB_Name()
is_read_committed_snapshot_on如果為1表示目前為已提交讀快照隔離級別。
參照網址:http://www.it118.org/Specials/c9fba99e-4401-49cf-8256-ac3c1a34c0d9/a25f60b1-697d-4651-b4e4-e7e1598feced.htm