Comment trouvez-vous le niveau de transaction de la base de données actuelle sur SQL Server?Comment trouver le niveau de transaction actuel?
Répondre
Exécuter ceci:
SELECT CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncommitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL
FROM sys.dm_exec_sessions
where session_id = @@SPID
Si vous parlez de la transaction en cours nichée niveau, alors vous utiliserez @@TRANCOUNT
.
Si vous parlez de niveau isolement transaction , utilisez DBCC USEROPTIONS
et chercher une option de niveau d'isolation . Si ce n'est pas le cas, c'est en lecture confirmée.
Gardez à l'esprit DBCC UserOptions est une option formidable pour trouver niveau d'isolation de votre session, mais il peut être difficile - si votre code change le niveau d'isolement par transaction, ces périodes de temps où l'isolement niveau est différent de la session par défaut peut être difficile à capturer. Par exemple, si vous ouvrez votre session avec le niveau d'isolation x, mais changez le niveau d'isolation en y pour la durée d'une transaction spécifique dans la session, DBCC USEROPTIONS ne vous donnera pas de visibilité si elle est appelée en dehors de cette transaction. – DCaugs
Dans SQL Server 2012 "niveau d'isolement" de "DBCC USEROPTIONS" est défini sur "read committed" –
DECLARE @UserOptions TABLE(SetOption varchar(100), Value varchar(100))
DECLARE @IsolationLevel varchar(100)
INSERT @UserOptions
EXEC('DBCC USEROPTIONS WITH NO_INFOMSGS')
SELECT @IsolationLevel = Value
FROM @UserOptions
WHERE SetOption = 'isolation level'
-- Do whatever you want with the variable here...
PRINT @IsolationLevel
Celui-ci ne fonctionne pas dans SQL Azure – Ronny
+1 car il imprime également 'snapshot' lorsqu'il est utilisé avec w/read commit (et non le mécanisme de verrouillage partagé par défaut) –
c'est trop, faites DBCC USEROPTIONS comme dit thiagoh – user1075613
SELECT CASE
WHEN transaction_isolation_level = 1
THEN 'READ UNCOMMITTED'
WHEN transaction_isolation_level = 2
AND is_read_committed_snapshot_on = 1
THEN 'READ COMMITTED SNAPSHOT'
WHEN transaction_isolation_level = 2
AND is_read_committed_snapshot_on = 0 THEN 'READ COMMITTED'
WHEN transaction_isolation_level = 3
THEN 'REPEATABLE READ'
WHEN transaction_isolation_level = 4
THEN 'SERIALIZABLE'
WHEN transaction_isolation_level = 5
THEN 'SNAPSHOT'
ELSE NULL
END AS TRANSACTION_ISOLATION_LEVEL
FROM sys.dm_exec_sessions AS s
CROSS JOIN sys.databases AS d
WHERE session_id = @@SPID
AND d.database_id = DB_ID();
S'il vous plaît également élaborer sur le code pour être plus éducatif. – lpapp
il suffit d'exécuter DBCC useroptions
et vous obtiendrez quelque chose comme ceci:
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
et il indique "read commit snapshot" lorsqu'il est actif (voir snapshot RC vs verrouillé), au moins sur SQL Server 2008 – user1075613
- 1. Comment programmer le niveau actuel de la batterie avec COCOA
- 2. Trouver le fichier actuel dans IntelliJ
- 3. Obtenir le niveau de volume actuel du système sur l'iPhone
- 4. Comment trouver le nom actuel du test en cours d'exécution?
- 5. Comment puis-je trouver le serveur DNS actuel?
- 6. Niveau d'isolation de transaction sur une connexion oledb
- 7. Niveau de conformité standard actuel de IronPython & IronRuby
- 8. Quelle est la différence entre une transaction SQL au niveau de la procédure stockée et une transaction au niveau SqlConnection?
- 9. Comment obtenez-vous le niveau actuel de la batterie dans .NET CF 3.5?
- 10. LINQ sur XML: trouver le parent de premier niveau
- 11. SharePoint WebPart Requête de contenu - Ignorer niveau actuel
- 12. Comment spécifier le niveau d'isolation de base de données à utiliser, à un niveau élevé?
- 13. Comment trouver le chemin depuis lequel le processus/exécutable actuel est en cours d'exécution?
- 14. Quel est le niveau actuel de support XHTML dans les navigateurs et les moteurs de recherche?
- 15. Existe-t-il un moyen de déterminer le niveau d'activité Outlook actuel?
- 16. Trouver l'emplacement actuel en utilisant html dans iphone
- 17. Comment définir le délai de transaction pendant l'application de débogage
- 18. Obtenir la distance de visualisation maximale du niveau de zoom actuel avec l'API Google Maps
- 19. Ocaml: Définir le répertoire de travail actuel?
- 20. Transaction des données d'application d'entreprise transaction
- 21. Comment récupérer le nom de ville actuel de l'utilisateur?
- 22. Comment obtenir le nom de contexte actuel de rspec?
- 23. Comment apporter un formulaire à l'écran actuel?
- 24. Comment obtenir le répertoire de travail actuel dans IronRuby?
- 25. Comment obtenir le nom de propriété actuel par réflexion?
- 26. Comment puis-je obtenir le répertoire de l'utilisateur actuel?
- 27. Hibernate.initialize() et le cache de second niveau
- 28. champ de transaction dans spring.net
- 29. Comment définissez-vous le répertoire actuel d'un processus débogué?
- 30. Qt: Tuer le processus actuel?
Celui-ci fonctionne dans SQL Azure :-) – Ronny
Celui-ci n'est pas précis si le niveau d'isolement est "read_commited_snapshot". Dans ce cas, il affichera uniquement "Readcommited". – GaTechThomas
@GaTechThomas, 'READ_COMMITTED_SNAPSHOT' n'est pas le niveau d'isolement, il est l'option d'une base de données permettant de modifier le comportement de' base de données à l'échelle de niveau d'isolement ReadDCommitted' –