¿Cómo puedo saber si el aislamiento de instantáneas está activado?

34

En SQL Server 2005/2008, ¿cómo puedo saber si el aislamiento de instantáneas está activado? Sé cómo activarlo, pero no puedo encontrar el encantamiento para que Google me diga cómo consultar el estado de la opción de aislamiento de instantáneas.

Samuel Jack
fuente

Respuestas:

6

haga clic derecho en el directorio de bases de datos en el explorador de objetos e inicie powershell. escriba:
get-childitem|select name, snapshotisolationstate
y presione regresar

Fatherjack
fuente
99
wow, ¿es realmente necesario el PS?
Nick Kavadias
66

Powershell, ¿en serio? ¿Qué tiene de malo el T-SQL de moda?

sys.databases es lo que quieres. Tiene columnas de descripción legible por humanos como snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'
Nick Kavadias
fuente
2
No, no es del todo necesario, pero estoy empezando a aprender PS, así que eché un vistazo para ver cómo se podía hacer y pensé en compartir.
Fatherjack
tanto como odio admitirlo, es genial
Nick Kavadias
Para ser honesto, estoy luchando por ver que será muy útil para mí, solo tenemos 30 servidores. Si quisiera el aislamiento de la instantánea de cada base de datos en cada servidor, entonces supongo que PS podría ser mejor que T-SQL ... por ahora lo estoy viendo como una alternativa, lo usaré aquí y allá, espero.
Fatherjack
No puedo editar porque es menos de un cambio de seis caracteres, pero para otras almas confundidas que copian y pegan la consulta, tenga en cuenta que debería ser sys.database sy no sys.database.
Mark Sowul
15

Ampliando la respuesta de nicks desde arriba.

Lo siguiente devolverá información sobre todas sus bases de datos

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

O usando el 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'
Arturo
fuente
2
Esta respuesta es para read_committed_snapshot, no para Snapshot Isolation Level como el OP solicitado. Son dos cosas diferentes.
Kevin Kalitowski
0

Cómo probar si el nivel de aislamiento de la transacción de instantánea está habilitado

Para probar si el nivel de aislamiento de la transacción de instantánea está habilitado, siga estos pasos:

  1. Inicie el Analizador de SQL Server.
  2. Cree una nueva traza para conectarse al origen de datos que especificó en el proyecto de Analysis Services.
  3. En el cuadro de diálogo Propiedades de seguimiento , haga clic en la pestaña Selección de eventos .
  4. En la columna TransactionID, haga clic para seleccionar las casillas de verificación en la fila para el evento SQL: BatchCompleted y en la fila para el evento SQL: BatchStarting.

Nota Para mostrar la columna TransactionID, haga clic para seleccionar la casilla de verificación Mostrar todas las columnas .

  1. Haga clic en Ejecutar para iniciar el seguimiento.
  2. En Business Intelligence Development Studio, procese el proyecto de Analysis Services.

  3. En SQL Server Profiler, busque los eventos SQL: BatchCompleted y los eventos SQL: BatchStarting que tienen el mismo valor en la columna TransactionID. Normalmente, estos eventos contienen la instrucción SELECT en la columna TextData. Para estos eventos, obtenga la ID de sesión en la columna SPID.

  4. Para conectarse a la fuente de datos, inicie SQL Server Management Studio.

  5. Cree una nueva consulta y luego ejecute la siguiente instrucción Transact-SQL.

    seleccione session_id, Transaction_Isolation_Level de sys.dm_exec_sessions donde session_id =

Nota En esta declaración, es un marcador de posición para la ID de sesión que obtuvo en el paso 7.

  1. En la pestaña Resultados , observe el valor en la columna Transaction_Isolation_Level. Este valor indica el nivel de aislamiento de transacción que está utilizando en el proyecto de Analysis Services. Cuando el nivel de aislamiento de la transacción de instantánea está habilitado, el valor en la columna Transaction_Isolation_Level es 5.

La siguiente tabla muestra los valores en la columna Transaction_Isolation_Level y los niveles de aislamiento de transacción correspondientes.

tabla que muestra los niveles de aislamiento de transacciones

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

MAL
fuente