Comment détecter le statut en lecture seule D'une base de données SQL Server en utilisant T-SQL?
j'ai besoin de savoir comment interroger un serveur SQL Microsoft, pour voir si une base de données a été définie à Read-Only
ou pas.
est-ce possible, en utilisant T-SQL?
4 réponses
l'information est stockée dans sys.databases
.
SELECT name, is_read_only
FROM sys.databases
WHERE name = 'MyDBNAme'
GO
--returns 1 in is_read_only when database is set to read-only mode.
Interrogation sys.databases
pour la vérification de la base de données est en Lecture Seule propriété donner les bonnes informations si la base de données a été explicitement en mode Lecture seule.
pour les bases de données qui sont dans les serveurs passifs (par exemple dans les serveurs secondaires de la technologie AlwaysOn), même si les bases de données ne peuvent pas être écrites, leur mode en lecture seule en sys.databases
serait encore défini comme False(0)
.
il est donc conseillé de vérifier le mode Lecture Seule de bases de données utilisant la déclaration:
SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability');
j'essayais d'utiliser la P. la réponse de campbell pour vérifier si mon Azure SQL DB est la première ou la réplique en lecture seule - cela n'a pas fonctionné. La DB primaire et la réplique retournée avaient toutes deux 0 sur le champ is_read_on seulement.
Voici ce qui a fonctionné pour moi:
SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability');
l'instruction select ci-dessus renvoie la chaîne 'READ_ONLY' ou 'READ_WRITE'.