Como posso saber se o isolamento de instantâneo está ativado?

34

No SQL Server 2005/2008, como posso saber se o isolamento de instantâneo está ativado? Eu sei como ativá-lo, mas não consigo encontrar o encantamento para fazer o google me dizer como consultar o estado da opção Isolamento de instantâneo.

Samuel Jack
fonte

Respostas:

6

clique com o botão direito do mouse no diretório de bancos de dados no explorador de objetos e inicie o powershell. digite:
get-childitem|select name, snapshotisolationstate
e pressione return

Fatherjack
fonte
9
uau, o PS é realmente necessário?
Nick Kavadias
66

Powershell, realmente? o que há de errado com o bom e velho T-SQL?

sys.databases é o que você deseja. Possui colunas de descrição legíveis por humanos, como snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'
Nick Kavadias
fonte
2
Não, não é totalmente necessário, mas estou apenas começando a aprender PS, então olhei para ver como isso poderia ser feito e pensei em compartilhar ..!
Fatherjack
tanto quanto eu odeio admitir isso, é legal
Nick Kavadias
para ser sincero, estou lutando para ver que vai ser muito útil para mim, só temos 30 servidores. Se eu quisesse o isolamento de instantâneo de todos os bancos de dados em todos os servidores, acho que o PS poderia ser melhor que o T-SQL.
Fatherjack
Eu não pode editar porque é menos do que uma mudança de seis caracteres, mas para outras almas confusas que copie e cole a consulta, nota que deve ser sys.database s e não sys.database.
21811 Mark Sowul
15

Expandindo a resposta de nicks de cima ..

A seguir, retornará informações sobre todos os seus bancos de dados

    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
fonte
3

Ou usando o código 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'
Arthur
fonte
2
Esta resposta é para read_committed_snapshot, não para o Nível de isolamento de captura instantânea, como o OP solicitado. São duas coisas diferentes.
21816 Kevin Kalitowski
0

Como testar se o nível de isolamento da transação de captura instantânea está ativado

Para testar se o nível de isolamento da transação de captura instantânea está ativado, siga estas etapas:

  1. Inicie o SQL Server Profiler.
  2. Crie um novo rastreamento para conectar-se à fonte de dados que você especificou no projeto Analysis Services.
  3. Na caixa de diálogo Propriedades de rastreamento , clique na guia Seleção de eventos .
  4. Na coluna TransactionID, clique para selecionar as caixas de seleção na linha do evento SQL: BatchCompleted e na linha do evento SQL: BatchStarting.

Nota Para exibir a coluna TransactionID, clique para selecionar a caixa de seleção Mostrar todas as colunas .

  1. Clique em Executar para iniciar o rastreamento.
  2. No Business Intelligence Development Studio, processe o projeto Analysis Services.

  3. No SQL Server Profiler, procure os eventos SQL: BatchCompleted e os eventos SQL: BatchStarting que possuem o mesmo valor na coluna TransactionID. Normalmente, esses eventos contêm a instrução SELECT na coluna TextData. Para esses eventos, obtenha o ID da sessão na coluna SPID.

  4. Para se conectar à fonte de dados, inicie o SQL Server Management Studio.

  5. Crie uma nova consulta e execute a seguinte instrução Transact-SQL.

    selecione session_id, Transaction_Isolation_Level em sys.dm_exec_sessions em que session_id =

Nota Nesta declaração, é um espaço reservado para a identificação da sessão que você obteve na etapa 7.

  1. Na guia Resultados , observe o valor na coluna Transaction_Isolation_Level. Este valor indica o nível de isolamento da transação que você está usando no projeto Analysis Services. Quando o nível de isolamento da transação de captura instantânea está ativado, o valor na coluna Transaction_Isolation_Level é 5.

A tabela a seguir mostra os valores na coluna Transaction_Isolation_Level e os níveis de isolamento de transação correspondentes.

tabela mostrando os níveis de isolamento da transação

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

MAL
fonte