16

これまでのところ (少なくとも MSSQL 2005 まで)、システム データベースは master、model、msdb、および tempdb であることがわかっています。

私が知る限り、これが将来も保存される保証はありません。また、sys.databases ビューも sys.sysdatabases ビューも、データベースがシステム データベースと見なされているかどうかを教えてくれません。

この情報 (データベースがシステム データベースと見なされるかどうか) を取得できる場所はありますか?

4

5 に答える 5

22

オブジェクトに飛び込みましたMicrosoft.SqlServer.Management.Smo.Database(これは Microsoft 自身によって提供されています!) 彼らは単に次のステートメントを使用してこれを行います:

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

つまり、データベースの名前masterが 、modelmsdbまたはの場合tempdb、それはシステム データベースです。is_distributor = 1ビューのフィールドの場合、システムデータベースでもありますsys.databases

お役に立てれば

ジミー

于 2012-03-13T10:55:53.840 に答える
0

DB_ID() 関数 <= 4 に頼ることができます

これを変えるにはかなりの努力が必要です...

于 2009-11-30T11:17:35.857 に答える
-6

いいえ、そのようなオプションはありません。ID sys.databases.owner_sid = 0x01 を確認できると思います。

MS がシステム データベース名を変更することを心配する必要はないと思います。彼らが演劇をやっていれば、少なくとも20年間は心配する必要はありません:)

于 2009-11-30T11:09:55.887 に答える