Domanda

So che finora (almeno fino a MSSQL 2005), i database di sistema sono master, modello, msdb e tempdb.

Il fatto è che, per quanto ne so, non è garantito che questo sia conservato in futuro. E né la vista database sys.d né la vista database sys.sys mi dicono se un database è considerato un database di sistema.

Esiste un luogo in cui è possibile ottenere queste informazioni (indipendentemente dal fatto che un database sia considerato un database di sistema)

È stato utile?

Soluzione

Appena immerso nell'oggetto Microsoft.SqlServer.Management.Smo.Database (fornito dalla stessa Microsoft!) Lo fanno semplicemente usando la seguente dichiarazione:

CAST(case when dtb.name in ('master','model','msdb','tempdb') 
   then 1 
   else dtb.is_distributor end AS bit) AS [IsSystemObject]

In breve: se un database è denominato master, model, msdb o tempdb, È un db di sistema; è anche un db di sistema, se il campo is_distributor = 1 nella vista sys.databases.

Spero che questo aiuti

Jimmy

Altri suggerimenti

Puoi fare affidamento sulla funzione DB_ID () < = 4

Dovresti lavorare molto duramente per cambiare questo ...

SQL Server Management Studio lo utilizza

se si espande " Database di sistema " in " Esplora oggetti " (visto da WireShark):

SELECT dtb.name AS [Database_Name]
FROM master.sys.databases AS dtb
WHERE (CAST(case when dtb.name in ('master','model','msdb','tempdb') then 1 else dtb.is_distributor end AS bit)=1)

Per semplicità ho rimosso le colonne irrilevanti, rimosso l'ordine e sostituito la variabile @ _msparam_0 con il suo valore 1

owner_sid è uguale a 0x01 solo per i database di sistema. Quindi puoi usarlo per riconoscere se il database è un DB di sistema o meno.

select * from sys.databases
where owner_sid != 0x01

no non esiste tale opzione AFAIK. immagino che potresti controllare l'id sys.databases.owner_sid = 0x01.

Non credo che dovresti preoccuparti che MS cambi i nomi dei db di sistema. se facessero il teatro non dovresti preoccupartene per almeno 20 anni :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top