Wie kann ich feststellen, ob die Snapshot-Isolierung aktiviert ist?

34

Wie kann ich in SQL Server 2005/2008 feststellen, ob die Snapshot-Isolierung aktiviert ist? Ich weiß, wie ich es einschalten soll, aber ich kann die Beschwörung nicht finden, dass Google mir mitteilt, wie ich den Status der Snapshot-Isolationsoption abfragen soll.

Samuel Jack
quelle

Antworten:

6

Klicken Sie mit der rechten Maustaste auf das Datenbankverzeichnis im Objekt-Explorer und starten Sie Powershell. Typ:
get-childitem|select name, snapshotisolationstate
und drücken Sie die Eingabetaste

Fatherjack
quelle
9
wow, ist die PS wirklich nötig?
Nick Kavadias
66

Powershell, wirklich? Was ist los mit altmodischem T-SQL?

sys.databases ist was Sie wollen. Es enthält lesbare Beschreibungsspalten wie snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'
Nick Kavadias
quelle
2
Nein, das ist nicht unbedingt notwendig, aber ich fange gerade an, PS zu lernen. Also habe ich nachgesehen, wie es gemacht werden könnte, und dachte, ich würde es teilen.
Fatherjack
So sehr ich es auch hasse, es zuzugeben, es ist cool
Nick Kavadias
Um ehrlich zu sein, ich kämpfe darum, dass es mir sehr nützen wird. Wir haben nur 30 Server. Wenn ich die Snapshot-Isolation von jeder Datenbank auf jedem Server haben möchte, dann ist PS wahrscheinlich besser als T-SQL. Im Moment sehe ich es nur als Alternative. Ich werde es hier und da verwenden, wie ich es erwarte.
Fatherjack
Ich kann nicht bearbeiten, da es sich um eine Änderung mit weniger als sechs Zeichen handelt. Bei anderen verwirrten Seelen, die die Abfrage kopieren und einfügen, sollte dies sys.database s und nicht sys.database sein.
Mark Sowul
15

Erweitere die Nick-Antwort von oben.

Im Folgenden werden Informationen zu all Ihren Datenbanken zurückgegeben

    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
jcrawfor74
quelle
3

Oder mit T-SQL-Code:

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'
Arthur
quelle
2
Diese Antwort gilt für read_committed_snapshot, nicht für die Snapshot-Isolationsstufe wie das angeforderte OP. Das sind zwei verschiedene Dinge.
Kevin Kalitowski
0

So testen Sie, ob die Snapshot-Transaktionsisolationsstufe aktiviert ist

Gehen Sie folgendermaßen vor, um zu testen, ob die Snapshot-Transaktionsisolationsstufe aktiviert ist:

  1. Starten Sie SQL Server Profiler.
  2. Erstellen Sie eine neue Ablaufverfolgung, um eine Verbindung zu der Datenquelle herzustellen, die Sie im Analysis Services-Projekt angegeben haben.
  3. Im Trace - Eigenschaften - Dialogfeld auf die Ereignisauswahl Registerkarte.
  4. Aktivieren Sie in der Spalte TransactionID die Kontrollkästchen in der Zeile für das Ereignis SQL: BatchCompleted und in der Zeile für das Ereignis SQL: BatchStarting.

Hinweis: aktivieren Sie das Show all columns Kontrolle-Kästchen, um die TransactionID-Spalte anzuzeigen .

  1. Klicken Sie auf Ausführen , um den Trace zu starten.
  2. Verarbeiten Sie in Business Intelligence Development Studio das Analysis Services-Projekt.

  3. Suchen Sie in SQL Server Profiler nach den Ereignissen SQL: BatchCompleted und nach den Ereignissen SQL: BatchStarting, die denselben Wert in der Spalte TransactionID aufweisen. In der Regel enthalten diese Ereignisse die SELECT-Anweisung in der TextData-Spalte. Beziehen Sie für diese Ereignisse die Sitzungs-ID in der Spalte SPID.

  4. Starten Sie SQL Server Management Studio, um eine Verbindung zur Datenquelle herzustellen.

  5. Erstellen Sie eine neue Abfrage, und führen Sie dann die folgende Transact-SQL-Anweisung aus.

    Wählen Sie session_id, Transaction_Isolation_Level aus sys.dm_exec_sessions, wobei session_id =

Hinweis: In dieser Anweisung ist ein Platzhalter für die Sitzungs-ID, die Sie in Schritt 7 erhalten haben.

  1. Auf der Ergebnisse Registerkarte beachten Sie den Wert in der Spalte Transaction_Isolation_Level. Dieser Wert gibt die Transaktionsisolationsstufe an, die Sie im Analysis Services-Projekt verwenden. Wenn die Snapshot-Transaktionsisolationsstufe aktiviert ist, ist der Wert in der Spalte Transaction_Isolation_Level 5.

In der folgenden Tabelle sind die Werte in der Spalte Transaction_Isolation_Level und die entsprechenden Transaktionsisolationsstufen aufgeführt.

Tabelle mit Transaktionsisolationsstufen

https://support.microsoft.com/de-de/help/919160/wie-den-Snapshot-Transaktionsisolationslevel-in-sql-server-2-aktivieren kann

BÖSE
quelle