Jak wykryć, czy READ_COMMITTED_SNAPSHOT jest włączony?

130

W MS SQL Server istnieje sposób na wykrycie, czy baza danych ma ustawiony poziom izolacji za pomocą polecenia T-SQL ALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON;

Nie mogę znaleźć prostego sposobu na wykrycie tego ani w T-SQL, ani za pośrednictwem GUI Management Studio.

TIA

Chris Driver
źródło

Odpowiedzi:

194
SELECT is_read_committed_snapshot_on FROM sys.databases 
WHERE name= 'YourDatabase'

Wartość zwracana:

  • 1 : READ_COMMITTED_SNAPSHOTopcja jest włączona . Operacje odczytu poniżej READ COMMITTEDpoziomu izolacji opierają się na skanowaniu migawek i nie uzyskują blokad.
  • 0 (domyślnie): READ_COMMITTED_SNAPSHOTopcja jest wyłączona . Operacje odczytu w ramach READ COMMITTEDpoziomu izolacji używają blokad wspólnych (S) .
Galwegian
źródło
7
Lubię "DBCC USEROPTIONS", trochę łatwiejsze do zapamiętania.
ProVega
5
@ProVega - DBCC USEROPTIONS nie zwraca wartości is_read_committed_snapshot_on.
Carsten Schütte
3
  1. Zgodnie z https://msdn.microsoft.com/en-us/library/ms180065.aspx „DBCC USEROPTIONS zgłasza poziom izolacji„ odczyt zatwierdzonej migawki ”, gdy opcja bazy danych READ_COMMITTED_SNAPSHOT jest ustawiona na ON, a poziom izolacji transakcji jest ustawiony na „odczyt zatwierdzony”. Rzeczywisty poziom izolacji został odczytany. "

  2. Również w SQL Server Management Studio, we właściwościach bazy danych w obszarze Opcje-> Różne jest stan opcji „Czy odczyt zatwierdzonej migawki włączone”

MikeL
źródło
1

Ani na SQL2005, ani 2012 nie DBCC USEROPTIONSpokazuje is_read_committed_snapshot_on:

Set Option  Value
textsize    2147483647
language    us_english
dateformat  mdy
datefirst   7
lock_timeout    -1
quoted_identifier   SET
arithabort  SET
ansi_null_dflt_on   SET
ansi_warnings   SET
ansi_padding    SET
ansi_nulls  SET
concat_null_yields_null SET
isolation level read committed
user3164106
źródło
6
Spróbuj przeczytać ten stackoverflow.com/about , aby uzyskać więcej informacji na temat pytań / odpowiedzi na SO. Twój wkład nie jest odpowiedzią na pytanie. To bardziej komentarz, który możesz dodać, gdy zwiększysz swoją reputację: stackoverflow.com/faq#reputation
Radim Köhler
1
Odpowiedź jest w porządku, ponieważ próbuje odpowiedzieć na pytanie „czy istnieje sposób?”. Ale samo powiedzenie, co nie działa, nie zostanie zaakceptowane.
Christian Strempfer,
4
Poziom izolacji w DBCC USEROPTIONSmówi ci. Jeśli to jest read committed snapshotwłączone, w przeciwnym razie wyłączone
Greg
@Greg - zatwierdzona migawka odczytu jest ustawiana na poziomie bazy danych, a nie na poziomie połączenia użytkownika. DBCC USEROPTIONS nie powie Ci, czy jest włączony, czy wyłączony.
JasonS