在SQL Server 2005/2008中,如何确定快照隔离功能是否已打开?我知道如何打开它,但是我找不到让Google告诉我如何查询快照隔离选项状态的咒语。
在SQL Server 2005/2008中,如何确定快照隔离功能是否已打开?我知道如何打开它,但是我找不到让Google告诉我如何查询快照隔离选项状态的咒语。
Answers:
Powershell,真的吗?好的老式T-SQL有什么问题?
sys.databases是您想要的。它具有易于阅读的描述列,例如snapshot_isolation_state_desc
SELECT snapshot_isolation_state_desc from sys.databases
where name='adventureworks'
从上方扩展刻痕反应。
以下将返回有关您所有数据库的信息
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
或使用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'
如何测试快照事务隔离级别是否已启用
要测试是否启用了快照事务隔离级别,请按照下列步骤操作:
- 启动SQL Server Profiler。
- 创建一个新的跟踪以连接到您在Analysis Services项目中指定的数据源。
- 在“ 跟踪属性”对话框中,单击“ 事件选择”选项卡。
- 在TransactionID列中,单击以选中SQL:BatchCompleted事件行中和SQL:BatchStarting事件行中的复选框。
注意要显示TransactionID列,请单击以选中“ 显示所有列”复选框。
- 单击运行以开始跟踪。
在Business Intelligence Development Studio中,处理Analysis Services项目。
在SQL Server Profiler中,在TransactionID列中查找具有相同值的SQL:BatchCompleted事件和SQL:BatchStarting事件。通常,这些事件在TextData列中包含SELECT语句。对于这些事件,请在SPID列中获取会话ID。
若要连接到数据源,请启动SQL Server Management Studio。
创建一个新的查询,然后运行以下Transact-SQL语句。
从sys.dm_exec_sessions中选择session_id,Transaction_Isolation_Level,其中session_id =
注意在此语句中,是您在步骤7中获得的会话ID的占位符。
- 在“ 结果”选项卡上,记下“ Transaction_Isolation_Level”列中的值。此值指示您在Analysis Services项目中使用的事务隔离级别。启用快照事务隔离级别时,Transaction_Isolation_Level列中的值为5。
下表显示了Transaction_Isolation_Level列中的值以及相应的事务隔离级别。