如何判断快照隔离是否已打开?

如何判断快照隔离是否已打开?

在 SQL Server 2005/2008 中,如何判断快照隔离是否已打开?我知道如何来打开它,但我找不到咒语让谷歌告诉我如何查询快照隔离选项的状态。

答案1

右键单击对象资源管理器中的数据库目录并启动 powershell。输入:
get-childitem|select name, snapshotisolationstate
然后按回车键

答案2

Powershell,真的吗?老式的 T-SQL 有什么问题?

系统数据库就是你想要的。它有人类可读的描述列,如snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'

答案3

扩大上述尼克斯的回应..

下面将返回有关所有数据库的信息

    select name
        , s.snapshot_isolation_state
        , snapshot_isolation_state_desc
        , is_read_committed_snapshot_on
        , recovery_model
        , recovery_model_desc
        , collation_name
    from sys.databases s

答案4

如何测试快照事务隔离级别是否启用

要测试快照事务隔离级别是否已启用,请按照以下步骤操作:

  1. 启动 SQL Server Profiler。
  2. 创建一个新的跟踪以连接到您在 Analysis Services 项目中指定的数据源。
  3. 在里面追踪属性对话框中,单击活动选择标签。
  4. 在 TransactionID 列中,单击以选中 SQL:BatchCompleted 事件行和 SQL:BatchStarting 事件行中的复选框。

注意:要显示 TransactionID 列,请单击选择显示所有列复选框。

  1. 点击跑步开始追踪。
  2. 在 Business Intelligence Development Studio 中,处理 Analysis Services 项目。

  3. 在 SQL Server Profiler 中,查找 SQL:BatchCompleted 事件和 SQL:BatchStarting 事件,这些事件在 TransactionID 列中具有相同的值。通常,这些事件在 TextData 列中包含 SELECT 语句。对于这些事件,请获取 SPID 列中的会话 ID。

  4. 要连接到数据源,请启动 SQL Server Management Studio。

  5. 创建一个新查询,然后运行以下 Transact-SQL 语句。

    从 sys.dm_exec_sessions 中选择 session_id、Transaction_Isolation_Level,其中 session_id=

注意:在此语句中,是您在步骤 7 中获取的会话 ID 的占位符。

  1. 结果选项卡中,记下 Transaction_Isolation_Level 列中的值。此值表示您在 Analysis Services 项目中使用的事务隔离级别。启用快照事务隔离级别时,Transaction_Isolation_Level 列中的值为 5。

下表显示了 Transaction_Isolation_Level 列中的值以及相应的事务隔离级别。

显示事务隔离级别的表

https://support.microsoft.com/en-us/help/919160/how-to-enable-the-snapshot-transaction-isolation-level-in-sql-server-2

相关内容