web-dev-qa-db-ja.com

スナップショット分離がオンになっているかどうかを確認するにはどうすればよいですか?

SQL Server 2005/2008では、スナップショット分離がオンになっているかどうかをどのように確認できますか?私はhowをオンにすることを知っていますが、Googleにスナップショット分離オプションの状態を照会する方法を教えてもらうための呪文が見つかりません。

35
Samuel Jack

オブジェクトエクスプローラーのデータベースディレクトリを右クリックして、Powershellを起動します。タイプ:
get-childitem|select name, snapshotisolationstate
そしてリターンキーを押します

6
Fatherjack

パワーシェル、本当に?昔ながらのT-SQLの何が問題になっていますか?

sys.databases が必要です。これには、snapshot_isolation_state_descのような人間が読める記述列があります。

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'
70
Nick Kavadias

上からのニックス応答を拡張します。

以下はすべてのデータベースに関する情報を返します

    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
15
jcrawfor74

または、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'
3
Arthur

スナップショットトランザクション分離レベルが有効かどうかをテストする方法

スナップショットトランザクション分離レベルが有効かどうかをテストするには、次の手順に従います。

  1. SQL Serverプロファイラを起動します。
  2. 新しいトレースを作成して、Analysis Servicesプロジェクトで指定したデータソースに接続します。
  3. Trace Propertiesダイアログボックスで、Events Selectionタブをクリックします。
  4. TransactionID列で、SQL:BatchCompletedイベントの行とSQL:BatchStartingイベントの行のチェックボックスをオンにします。

注TransactionID列を表示するには、Show all columnsチェックボックスをクリックしてオンにします。

  1. Runをクリックして、トレースを開始します。
  2. Business Intelligence Development Studioで、Analysis Servicesプロジェクトを処理します。

  3. SQL Serverプロファイラーで、SQL:BatchCompletedイベントと、TransactionID列に同じ値を持つ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. Resultsタブで、Transaction_Isolation_Level列の値を確認します。この値は、Analysis Servicesプロジェクトで使用しているトランザクション分離レベルを示します。スナップショットトランザクション分離レベルが有効な場合、Transaction_Isolation_Level列の値は5です。

次の表は、Transaction_Isolation_Level列の値と、対応するトランザクション分離レベルを示しています。

table showing transaction isolation levels

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

0
E.V.I.L.