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


34

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

回答:


6

オブジェクトエクスプローラーでデータベースディレクトリを右クリックし、powershellを起動します。入力:
get-childitem|select name, snapshotisolationstate
Returnキーを押します


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を習い始めたばかりです。
ファザージャック


正直なところ、私はそれが私にとって多くの使用になるだろうと見ているのに苦労しています。すべてのサーバー上のすべてのデータベースからスナップショットを分離したい場合、PSはT-SQLよりも優れている可能性があります。
ファザージャック

私が編集し、それが少ない6文字の変化よりもだからできない、しかし、それはsys.databaseしなければならないことに注意してくださいコピーしてクエリを貼り付け、他の混乱し魂のためとsys.databaseませんが。
マーク・ソウル

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が要求したようなスナップショット分離レベルに対するものではありません。それらは2つの異なるものです。
ケビンKalitowski 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ステートメントを実行します。

    session_id = 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/en-us/help/919160/how-to-enable-the-snapshot-transaction-isolation-level-in-sql-server-2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.