SQL Server 2005/2008では、スナップショット分離がオンになっているかどうかをどのように確認できますか?私はhowをオンにすることを知っていますが、Googleにスナップショット分離オプションの状態を照会する方法を教えてもらうための呪文が見つかりません。
オブジェクトエクスプローラーのデータベースディレクトリを右クリックして、Powershellを起動します。タイプ:get-childitem|select name, snapshotisolationstate
そしてリターンキーを押します
パワーシェル、本当に?昔ながらの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プロファイラを起動します。
- 新しいトレースを作成して、Analysis Servicesプロジェクトで指定したデータソースに接続します。
- Trace Propertiesダイアログボックスで、Events Selectionタブをクリックします。
- TransactionID列で、SQL:BatchCompletedイベントの行とSQL:BatchStartingイベントの行のチェックボックスをオンにします。
注TransactionID列を表示するには、Show all columnsチェックボックスをクリックしてオンにします。
- Runをクリックして、トレースを開始します。
Business Intelligence Development Studioで、Analysis Servicesプロジェクトを処理します。
SQL Serverプロファイラーで、SQL:BatchCompletedイベントと、TransactionID列に同じ値を持つ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のプレースホルダーです。
- Resultsタブで、Transaction_Isolation_Level列の値を確認します。この値は、Analysis Servicesプロジェクトで使用しているトランザクション分離レベルを示します。スナップショットトランザクション分離レベルが有効な場合、Transaction_Isolation_Level列の値は5です。
次の表は、Transaction_Isolation_Level列の値と、対応するトランザクション分離レベルを示しています。