在 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
如何测试快照事务隔离级别是否启用
要测试快照事务隔离级别是否已启用,请按照以下步骤操作:
- 启动 SQL Server Profiler。
- 创建一个新的跟踪以连接到您在 Analysis Services 项目中指定的数据源。
- 在里面追踪属性对话框中,单击活动选择标签。
- 在 TransactionID 列中,单击以选中 SQL:BatchCompleted 事件行和 SQL:BatchStarting 事件行中的复选框。
注意:要显示 TransactionID 列,请单击选择显示所有列复选框。
- 点击跑步开始追踪。
在 Business Intelligence Development Studio 中,处理 Analysis Services 项目。
在 SQL Server Profiler 中,查找 SQL:BatchCompleted 事件和 SQL:BatchStarting 事件,这些事件在 TransactionID 列中具有相同的值。通常,这些事件在 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 列中的值以及相应的事务隔离级别。