Как узнать, включена ли изоляция моментальных снимков?

34

Как в SQL Server 2005/2008 узнать, включена ли изоляция моментальных снимков? Я знаю, как включить его, но не могу найти заклинание, чтобы Google сказал мне, как запросить состояние параметра «Снимок изоляции».

Сэмюэл Джек
источник

Ответы:

6

щелкните правой кнопкой мыши на каталоге баз данных в проводнике объектов и запустите PowerShell. введите:
get-childitem|select name, snapshotisolationstate
и нажмите возврат

Fatherjack
источник
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, поэтому посмотрел, как это можно сделать, и подумал, что я поделюсь ..!
Отек Джек
как бы мне не хотелось это признавать, это круто
Ник Кавадиас
честно говоря, я изо всех сил пытаюсь увидеть, что это будет очень полезно для меня, у нас есть только 30ish серверов. Если бы я хотел изолировать моментальный снимок от каждой базы данных на каждом сервере, то я думаю, что PS может быть лучше, чем T-SQL ... на данный момент я рассматриваю его как альтернативу, я буду использовать его здесь и там, я ожидаю.
Отек Джек
Я не могу редактировать, потому что это изменение меньше шести символов, но для других запутанных душ, которые копируют и вставляют запрос, обратите внимание, что это должен быть sys.database s, а не 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
jcrawfor74
источник
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. Это две разные вещи.
Кевин Калитовски
0

Как проверить, включен ли уровень изоляции транзакции моментального снимка

Чтобы проверить, включен ли уровень изоляции транзакции моментального снимка, выполните следующие действия:

  1. Запустите SQL Server Profiler.
  2. Создайте новую трассировку для подключения к источнику данных, который вы указали в проекте служб Analysis Services.
  3. В диалоговом окне « Свойства трассировки » перейдите на вкладку « Выбор событий ».
  4. В столбце TransactionID установите флажки в строке для события SQL: BatchCompleted и в строке для события SQL: BatchStarting.

Примечание. Чтобы отобразить столбец TransactionID, установите флажок Показать все столбцы .

  1. Нажмите Run, чтобы начать трассировку.
  2. В среде Business Intelligence Development Studio обработайте проект служб аналитики.

  3. В SQL Server Profiler найдите события SQL: BatchCompleted и события SQL: BatchStarting, имеющие одинаковое значение в столбце TransactionID. Как правило, эти события содержат инструкцию SELECT в столбце TextData. Для этих событий получите идентификатор сеанса в столбце SPID.

  4. Чтобы подключиться к источнику данных, запустите SQL Server Management Studio.

  5. Создайте новый запрос, а затем выполните следующую инструкцию Transact-SQL.

    выберите session_id, Transaction_Isolation_Level из sys.dm_exec_sessions, где session_id =

Примечание. В этом операторе указывается идентификатор сеанса, полученный на шаге 7.

  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

ЗЛО
источник