2010-05-28 14 views

risposta

31

Le informazioni vengono memorizzate in 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

Perfetto! GRAZIE!!! – Giuseppe

6

Questo è un command per visualizzare o impostare questa proprietà.

EXEC sp_dboption "AdventureWorks", "read only" 

uscita Esempio

OptionName CurrentSetting  
read only OFF 
4

stavo cercando di usare la risposta del p.campbell per verificare se il mio Azure SQL DB è il principale uno o l'sola lettura replica - non ha funzionato . Sia il DB principale che la replica restituiti erano 0 nel campo is_read_only.

Ecco cosa ha funzionato per me:

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

quanto sopra SELECT restituisce istruzione stringa 'READ_ONLY' o 'READ_WRITE'.

11

Interrogazione sys.databases per il controllo di proprietà di sola lettura di un DB sarà solo dare le informazioni giuste se il database è stato esplicitamente set di modalità di sola lettura.

Per i database che si trovano nei server passivi (ad esempio nei server secondari di tecnologia AlwaysOn), anche se non è possibile scrivere i database, la loro modalità di sola lettura in sys.databases sarà comunque impostata come False(0).

Quindi, si consiglia di controllare la modalità di sola lettura del database utilizzando l'istruzione:

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

Questo ha funzionato anche per me per controllare Primario vs Secondario su un Database Azure. Di nota, i valori restituiti sono READ_ONLY e READ_WRITE. Inoltre, in Azure, se si esegue una query da un database che non corrisponde al nome del database passato nel primo parametro, il risultato sarà NULL. –

+0

Quindi questo funziona bene su Azure: SELECT DATABASEPROPERTYEX (DB_NAME(), 'Updateability'); –

Problemi correlati