如何确定快照隔离功能是否已打开?


34

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

Answers:


6

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


9
哇,PS真的有必要吗?
尼克·卡瓦迪亚斯

66

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

sys.databases是您想要的。它具有易于阅读的描述列,例如snapshot_isolation_state_desc

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

2
不,不是完全必要,但我刚刚开始学习PS,因此看了看如何做,并认为我会分享..!
Fatherjack

不愿

老实说,我正在努力查看它对我的用处,我们只有30台服务器。如果我想从每台服务器上的每个数据库中隔离快照,那么我想PS可能比T-SQL更好。
Fatherjack

我不能编辑,因为它是小于六个字符的变化,但对于谁复制并粘贴查询,注意应该sys.database其他困惑的灵魂小号,而不是sys.database。
Mark Sowul 2011年

15

从上方扩展刻痕反应。

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

    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

3

或使用T-SQL代码:

SELECT
'Current Isolation State:' [ ],
CASE is_read_committed_snapshot_on
        WHEN 1 THEN 'ON' ELSE 'OFF'
    END AS [Read Committed Snapsot State]
FROM sys.databases
WHERE name = 'MyDatabaseName'

2
此答案适用于read_committed_snapshot,而不适用于快照隔离级别(如请求的OP)。他们是两个不同的东西。
凯文·卡利托夫斯基'16

0

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

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

  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中,在TransactionID列中查找具有相同值的SQL:BatchCompleted事件和SQL:BatchStarting事件。通常,这些事件在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/zh-cn/help/919160/how-to-enable-the-snapshot-transaction-isolation-level-in-sql-server-2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.