如果要把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