SQL Server已提交读快照隔离级别的设置

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

SQL Server已提交读快照隔离级别的设置,布布扣,bubuko.com

时间: 2024-10-12 21:30:23

SQL Server已提交读快照隔离级别的设置的相关文章

SQL Server 已提交读快照 测试

原文:SQL Server 已提交读快照 测试 1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN UPDATE Test SET C2 = '200' WHERE C1 = 'A' -- COMMIT c) 查询数据(查询没有被阻塞,C2 = '100') SELECT * FROM Test d) 开启事务2,更新数据C2 = '300'(未提交),更新操作被阻

SQL Server 已提交读快照测试

1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN UPDATE Test SET C2 = '200' WHERE C1 = 'A' -- COMMIT c) 查询数据(查询没有被阻塞,C2 = '100') SELECT * FROM Test d) 开启事务2,更新数据C2 = '300'(未提交),更新操作被阻塞(等待事务1提交) BEGIN TRAN UP

nolock的替代方案-提交读快照隔离[行版本控制]

with(nolock)并意味着没有锁,实际上在查询一张表时,还是有锁,会对对象增加架构锁, 防止表会修改,会对数据库增加共享锁.若使用drop index,则要等到架构锁释放. sql server2005提供了快照隔离和读取已提交快照这两种新的不加锁.无阻塞的事务隔离级别,可使用 快照:每次从数据进行修改时,会在teampdb上存储上一版本 好处: select不要求锁,会大大降低整个库的锁负载量 nolock会读取到未提交事务时修改的数据,而读快照读取的是修改之前的数据,故nolock易读

转:nolock的替代方案-提交读快照隔离[行版本控制]

with(nolock)并意味着没有锁,实际上在查询一张表时,还是有锁,会对对象增加架构锁, 防止表会修改,会对数据库增加共享锁.若使用drop index,则要等到架构锁释放. sql server2005提供了快照隔离和读取已提交快照这两种新的不加锁.无阻塞的事务隔离级别,可使用 快照:每次从数据进行修改时,会在teampdb上存储上一版本 好处: select不要求锁,会大大降低整个库的锁负载量 nolock会读取到未提交事务时修改的数据,而读快照读取的是修改之前的数据,故nolock易读

SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作

原文:SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作 在开发或者测试环境的数据库中,经常会发现有开发或者测试人员误删除表或者数据的情况,对于开发或者测试库,一般都没有安排定时的备份任务去备份数据库,一方面是由于存储资源有限,不太可能给开发或者测试环境准备大量的存储空间,二是必要性不是很强,开发或者测试库的数据库对象变化太多,通过还原备份的方式又有可能冲掉其最近新建的数据库对象.但是不得不面对的问题就是个别人在执行update或者delete操作的时候“忘了加

出现“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。”这样的错误!

1.基本现象:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. 2. 可能出现的情况,拷贝了别人的项目,或者在网上找的别人的项目运行时附加到自己的数据库上,特别是在有版本差异的时候进行附加的时候,(比如:用SQL2005建的数据库,你附加在SQL2008的下面的时候)你需要修改项目中Web.Config文件中的数据库连接字符串,这时候你就需要注意了,根据不同版本的数据库,它的

请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)

程序异常,错误信息:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接) 我今天也遇到这个问题了,解决了,首先确保你的MSSQLSERVER 内置账户是:Local System,如果不是就到Sql Server 配置管理器——Sql Server

连接数据库与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误,请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。

如果您的连接字符串是这样的 <add key="ConnectionString" value="server=127.0.0.1;database=NewsTest;uid=sa;pwd=***"/> 或者这样的 <add key="ConnectionString" value="server=local;database=NewsTest;uid=sa;pwd=***"/> 并且没有语法错误,建议

未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 error: 40 - 无法打开到 SQL Server 的连接

1.出现这种问题可能是您的sql是2005版的,没有支持sqlAgent服务,可尝试将服务器名称写为.\sqlexpress 使用windows身份登录,如图一所示. 2.登录成功后点安全性->登录名(右击)->新建登录名,如图2所示. 3.允许新用户登录,如图3所示.重新登录即可,如图4. 我因为这个原因被折磨了很久,希望能够帮到同样遇到困惑的人. 图1: 图2: 图3: 图4: 未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. error: