Frage

Ich weiß, dass bisher (bis MSSQL 2005 zumindest), Systemdatenbanken sind Master, Modell, msdb und tempdb.

Das Ding ist, soweit ich das beurteilen kann, ist dies nicht gewährleistet auch in Zukunft erhalten bleiben. Und weder die sys.databases Ansicht noch die sys.sysdatabases sieht mir sagen, ob eine Datenbank als Systemdatenbank betrachtet wird.

Gibt es irgendwo, wo diese Informationen (ob eine Datenbank eine Systemdatenbank oder nicht berücksichtigt wird) erhalten werden?

War es hilfreich?

Lösung

tauchte einfach in Microsoft.SqlServer.Management.Smo.Database Objekt (das von Microsoft selbst zur Verfügung gestellt!) Sie sind einfach tun dies mit folgenden Aussage:

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

Kurz gesagt: Wenn eine Datenbank master, model, msdb oder tempdb benannt ist, es ist ein System db; es ist auch ein System db, wenn Feld is_distributor = 1 in der Ansicht sys.databases.

Hope, das hilft

Jimmy

Andere Tipps

Sie können auf der DB_ID () Funktion verlassen <= 4

Sie müßten sehr hart arbeiten, um dies zu ändern ...

SQL Server Management Studio verwendet diese

Wenn Sie erweitern "Systemdatenbanken" in "Objekt-Explorer" (gesehen von 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)

Aus Gründen der Einfachheit I entfernt irrelevante Spalten, entfernt orderby und ersetzt @ _msparam_0 Variable durch ihren Wert 1

owner_sid gleich 0x01 nur für Systemdatenbanken. So können Sie es verwenden, um zu erkennen, ob die Datenbank ein System DB ist oder nicht.

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

no gibt es keine solche Option AFAIK. Ich denke, man könnte die ID der sys.databases.owner_sid prüfen = 0x01.

Ich glaube nicht, Sie MS Ändern der System db Namen kümmern. wenn sie sich theat würden Sie nicht für mindestens 20 Jahre zu kümmern haben:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top