Tsql 运行Alter Database,并将READ_COMMITED_SNAPSHOT设置为ON

Tsql 运行Alter Database,并将READ_COMMITED_SNAPSHOT设置为ON,tsql,sql-server-2012,Tsql,Sql Server 2012,我正在尝试运行下面的SQL语句: ALTER DATABASE DBNAME SET READ_COMMITTED_SNAPSHOT ON 但是,当我运行时,它没有完成执行,我必须在1小时后终止 对于如何在不断开所有其他用户与数据库的连接的情况下运行此操作,是否有任何建议? 感谢完成此命令需要在一瞬间成为针对数据库打开的唯一事务。在我看来,这几乎需要您将DB短暂地置于单用户模式。但是,如果你只是让查询(尝试)在一夜之间运行,在某个时候你会得到神奇的瞬间 这里有更多关于这个主题的内容: 编辑

我正在尝试运行下面的SQL语句:

 ALTER DATABASE DBNAME
 SET READ_COMMITTED_SNAPSHOT ON
但是,当我运行时,它没有完成执行,我必须在1小时后终止

对于如何在不断开所有其他用户与数据库的连接的情况下运行此操作,是否有任何建议?
感谢

完成此命令需要在一瞬间成为针对数据库打开的唯一事务。在我看来,这几乎需要您将DB短暂地置于单用户模式。但是,如果你只是让查询(尝试)在一夜之间运行,在某个时候你会得到神奇的瞬间

这里有更多关于这个主题的内容:

编辑:联机丛书提供了更多细节:

当您将ALLOW_SNAPSHOT_ISOLATION设置为新状态(从ON到OFF,或从OFF到ON)时,ALTER DATABASE在提交数据库中的所有现有事务之前不会将控制权返回给调用者。如果数据库已经处于ALTERDATABASE语句中指定的状态,则会立即将控件返回给调用方。如果ALTER DATABASE语句不能快速返回,请使用sys.dm_tran_active_snapshot_DATABASE_事务来确定是否存在长时间运行的事务。如果取消ALTER DATABASE语句,则数据库将保持启动ALTER DATABASE时的状态。sys.databases目录视图指示数据库中快照隔离事务的状态。如果快照\u隔离\u状态\u desc=处于\u转换\u到\u打开状态,则ALTER DATABASE ALLOW\u snapshot\u隔离关闭将暂停六秒钟,然后重试该操作


使用主ALTER DATABASE DBNAME SET READ_COMMITED_SNAPSHOT ON并立即回滚