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?

23
demandé sur Oreo 2010-05-28 19:23:13

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.
34
répondu p.campbell 2010-05-28 15:26:19

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');
14
répondu Masood Hashim 2018-02-05 14:08:20

Voici un commande pour afficher ou définir cette propriété.

EXEC sp_dboption "AdventureWorks", "read only"

sortie de L'échantillon

OptionName CurrentSetting    
read only OFF
6
répondu JohnFx 2010-05-28 15:28:00

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'.

4
répondu Rafal Zajac 2015-12-15 16:01:18