Comment savoir si l'isolement de capture instantanée est activé?

34

Dans SQL Server 2005/2008, comment savoir si l'isolation de capture instantanée est activée? Je sais comment l' activer, mais je ne parviens pas à trouver l'incantation pour que Google me dise comment interroger l'état de l'option Isolement d'instantané.

Samuel Jack
la source

Réponses:

6

Faites un clic droit sur le répertoire des bases de données dans l'explorateur d'objets et démarrez Powershell. tapez:
get-childitem|select name, snapshotisolationstate
et appuyez sur Entrée

Fatherjack
la source
9
wow, le PS est-il vraiment nécessaire?
Nick Kavadias
66

Powershell, vraiment? qu'est-ce qui ne va pas avec le bon vieux T-SQL?

sys.databases est ce que vous voulez. Il a des colonnes de description lisibles par l'homme comme snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'
Nick Kavadias
la source
2
Non, pas tout à fait nécessaire, mais je commence tout juste à apprendre le PS, alors j'ai jeté un œil pour voir comment cela pourrait être fait et j'ai pensé partager…!
Fatherjack
autant que je déteste l'admettre, c'est cool
Nick Kavadias
pour être honnête, j'ai du mal à voir que cela va m'être beaucoup utile, nous n'avons que 30 serveurs. Si je voulais l'isolation de cliché de chaque base de données sur chaque serveur, alors j'imagine que PS pourrait être meilleur que T-SQL… pour l'instant, je le vois simplement comme une alternative, je vais l'utiliser ici et là, je m'attends.
Fatherjack
Je ne peux pas éditer car il s'agit d'un changement de moins de six caractères, mais pour les autres âmes confuses qui copient et collent la requête, notez qu'il doit s'agir de sys.database s et non de sys.database.
Mark Sowul
15

Développer la réponse des pseudos par le haut ..

Les informations suivantes renvoient des informations sur toutes vos bases de données.

    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
la source
3

Ou en utilisant le code 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
la source
2
Cette réponse est pour read_committed_snapshot, pas pour le niveau d’isolation de capture instantanée, comme pour le terminal opérateur demandé. Ce sont deux choses différentes.
Kevin Kalitowski
0

Comment tester si le niveau d'isolation de transaction d'instantané est activé

Pour tester si le niveau d'isolation de transaction d'instantané est activé, procédez comme suit:

  1. Démarrez SQL Server Profiler.
  2. Créez une nouvelle trace pour vous connecter à la source de données que vous avez spécifiée dans le projet Analysis Services.
  3. Dans la boîte de dialogue Propriétés de la trace , cliquez sur l' onglet Sélection d'événements .
  4. Dans la colonne TransactionID, cochez les cases dans la ligne pour l'événement SQL: BatchCompleted et dans la ligne pour l'événement SQL: BatchStarting.

Note Pour afficher la colonne TransactionID, activez la case à cocher Afficher toutes les colonnes .

  1. Cliquez sur Exécuter pour démarrer la trace.
  2. Dans Business Intelligence Development Studio, traitez le projet Analysis Services.

  3. Dans SQL Server Profiler, recherchez les événements SQL: BatchCompleted et les événements SQL: BatchStarting ayant la même valeur dans la colonne TransactionID. En règle générale, ces événements contiennent l'instruction SELECT dans la colonne TextData. Pour ces événements, obtenez l'ID de session dans la colonne SPID.

  4. Pour vous connecter à la source de données, démarrez SQL Server Management Studio.

  5. Créez une nouvelle requête, puis exécutez l'instruction Transact-SQL suivante.

    sélectionnez session_id, Transaction_Isolation_Level à partir de sys.dm_exec_sessions où session_id =

Note Dans cette instruction, est un espace réservé pour l'ID de session que vous avez obtenu à l'étape 7.

  1. Sous l' onglet Résultats , notez la valeur dans la colonne Transaction_Isolation_Level. Cette valeur indique le niveau d'isolation de transaction que vous utilisez dans le projet Analysis Services. Lorsque le niveau d'isolation de transaction d'instantané est activé, la valeur de la colonne Transaction_Isolation_Level est 5.

Le tableau suivant présente les valeurs de la colonne Transaction_Isolation_Level et les niveaux d'isolation de transaction correspondants.

tableau montrant les niveaux d'isolement des transactions

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

MAL
la source