2010-05-28 25 views

Respuesta

31

La información se almacena en 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. 
+0

perfecto! ¡¡¡GRACIAS!!! – Giuseppe

6

Aquí hay un command para mostrar o establecer esta propiedad.

EXEC sp_dboption "AdventureWorks", "read only" 

Salida de ejemplo

OptionName CurrentSetting  
read only OFF 
4

yo estaba tratando de usar la respuesta de la p.campbell para comprobar si mi Azure SQL DB es el principal o la única réplica de lectura - que no funcionó . Tanto el DB primario como la réplica devuelta tenían 0 en el campo is_read_only.

Esto es lo que me funcionó:

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

la instrucción SELECT devuelve cadena anterior 'READ_ONLY' o 'READ_WRITE'.

11

Consulta sys.databases para la comprobación de propiedad de sólo lectura de una base de datos única se dar la información correcta si la base de datos ha sido explícitamente conjunto a modo de sólo lectura.

Para las bases de datos que se encuentran en los servidores pasivos (por ejemplo, servidores secundarios de tecnología AlwaysOn), aunque las bases de datos no se puedan escribir, su modo de solo lectura en sys.databases se establecerá como False(0).

Por lo tanto, es aconsejable comprobar el modo de sólo lectura de bases de datos utilizando la sentencia:

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

Esto funcionó para mí también para buscar primario vs secundario en una base de datos de Azure. De nota, los valores devueltos son READ_ONLY y READ_WRITE. Además, en Azure, si consulta desde una base de datos que no coincide con el nombre de la base de datos pasado al primer parámetro, el resultado será NULL. –

+0

Así que esto funciona bien en Azure: SELECCIONAR DATABASEPROPERTYEX (DB_NAME(), 'Capacidad de actualización'); –

Cuestiones relacionadas