Подтвердить что ты не робот

Как обнаружить статус базы данных только для SQL Server с помощью tsql

Мне нужно знать, как опросить мой Microsoft SQL Server, чтобы узнать, установлена ​​ли данная база данных только для чтения. Это возможно?

4b9b3361

Ответ 1

Информация хранится в 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.

Ответ 2

Запрос sys.databases для проверки свойства Read-Only даст правильную информацию только в том случае, если в базе данных явно установлен режим только для чтения.

Однако для баз данных, находящихся на пассивных серверах, например, во вторичных серверах AlwaysOn. Несмотря на то, что базы данных не могут быть записаны, его режим только для чтения в sys.databases все равно будет установлен как False (0).

Следовательно, рекомендуется проверить режим базы данных только для чтения с помощью инструкции:

SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability'); 

Ответ 4

Я пытался использовать ответ p.campbell, чтобы проверить, является ли мой Azure SQL DB основным или репликой только для чтения - это не сработало. Как первичная БД, так и возвращенная реплика имели 0 в поле is_read_only.

Вот что сработало для меня:

SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability'); 

вышеуказанный оператор select возвращает строку READ_ONLY или READ_WRITE.