Jak mogę sprawdzić, czy funkcja Snapshot Isolation jest włączona?

34

W SQL Server 2005/2008, jak mogę sprawdzić, czy izolacja migawki jest włączona? Wiem, jak to włączyć, ale nie mogę znaleźć inkantacji, aby google powiedział mi, jak zapytać o stan opcji izolacji migawki.

Samuel Jack
źródło

Odpowiedzi:

6

kliknij prawym przyciskiem myszy katalog baz danych w eksploratorze obiektów i uruchom PowerShell. wpisz:
get-childitem|select name, snapshotisolationstate
i naciśnij klawisz Return

Ojcze
źródło
9
wow, czy PS jest naprawdę konieczne?
Nick Kavadias
66

Powershell, naprawdę? co jest nie tak z dobrze zaprojektowanym T-SQL?

sys.databases jest tym, czego chcesz. Ma czytelne dla człowieka kolumny opisu, takie jak snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'
Nick Kavadias
źródło
2
Nie, nie jest to absolutnie konieczne, ale dopiero zaczynam się uczyć PS, więc zastanowiłem się, jak to zrobić i pomyślałem, że podzielę się ...!
Ojcze
chociaż nie chcę
szczerze mówiąc, nie mogę się doczekać, aż przyda mi się to bardzo, mamy tylko 30 serwerów. Gdybym chciał izolacji migawki z każdej bazy danych na każdym serwerze, myślę, że PS może być lepszy niż T-SQL .. na razie widzę to jako alternatywę, użyję jej tu i tam, oczekuję.
Ojcze
Nie mogę edytować, ponieważ jest to zmiana krótsza niż sześć znaków, ale dla innych zdezorientowanych dusz, które kopiują i wklejają zapytanie, pamiętaj, że powinien to być sys.database s, a nie sys.database.
Mark Sowul
15

Rozwijanie odpowiedzi nicków z góry ..

Poniższe informacje zwrócą informacje o wszystkich twoich bazach danych

    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
źródło
3

Lub używając kodu 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'
Artur
źródło
2
Ta odpowiedź jest przeznaczona dla read_committed_snapshot, a nie dla poziomu izolacji migawki, jak wymagane PO. To są dwie różne rzeczy.
Kevin Kalitowski
0

Jak sprawdzić, czy poziom izolacji transakcji migawki jest włączony

Aby sprawdzić, czy poziom izolacji transakcji migawki jest włączony, wykonaj następujące kroki:

  1. Uruchom program SQL Server Profiler.
  2. Utwórz nowy ślad, aby połączyć się ze źródłem danych określonym w projekcie Analysis Services.
  3. W oknie dialogowym Właściwości śledzenia kliknij kartę Wybór zdarzeń .
  4. W kolumnie TransactionID kliknij, aby zaznaczyć pola wyboru w wierszu zdarzenia SQL: BatchCompleted oraz w wierszu zdarzenia SQL: BatchStarting.

Uwaga Aby wyświetlić kolumnę TransactionID, kliknij, aby zaznaczyć pole wyboru Pokaż wszystkie kolumny .

  1. Kliknij Uruchom, aby rozpocząć śledzenie.
  2. W Business Intelligence Development Studio przetworz projekt Analysis Services.

  3. W SQL Server Profiler poszukaj zdarzeń SQL: BatchCompleted i zdarzeń SQL: BatchStarting, które mają tę samą wartość w kolumnie TransactionID. Zazwyczaj te zdarzenia zawierają instrukcję SELECT w kolumnie TextData. W przypadku tych zdarzeń uzyskaj identyfikator sesji w kolumnie SPID.

  4. Aby połączyć się ze źródłem danych, uruchom SQL Server Management Studio.

  5. Utwórz nowe zapytanie, a następnie uruchom następującą instrukcję Transact-SQL.

    wybierz session_id, Transaction_Isolation_Level z sys.dm_exec_sessions gdzie session_id =

Uwaga W tym zestawieniu symbol zastępczy dla identyfikatora sesji uzyskanego w kroku 7.

  1. Na karcie Wyniki zanotuj wartość w kolumnie Transaction_Isolation_Level. Ta wartość wskazuje poziom izolacji transakcji, którego używasz w projekcie Analysis Services. Gdy poziom izolacji transakcji migawki jest włączony, wartość w kolumnie Transaction_Isolation_Level wynosi 5.

W poniższej tabeli przedstawiono wartości w kolumnie Transaction_Isolation_Level i odpowiadające im poziomy izolacji transakcji.

tabela pokazująca poziomy izolacji transakcji

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

ZŁO
źródło