SQL Server:如何判断数据库是否是系统数据库?

Vin*_*vic 14 sql-server-2005 information-schema

我知道到目前为止(至少在MSSQL 2005之前),系统数据库是master,model,msdb和tempdb.

事实上,据我所知,未来不能保证这一点.sys.databases视图和sys.sysdatabases视图都不会告诉我数据库是否被视为系统数据库.

是否有可以获得此信息(数据库是否被视为系统数据库)的地方?

小智 20

刚潜入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]
Run Code Online (Sandbox Code Playgroud)

简而言之:如果数据库被命名为master,model,msdb或者tempdb,它是一个系统数据库; 它也是一个系统db,如果is_distributor = 1是视图中的字段sys.databases.

希望这可以帮助

吉米

  • 吉米抓住了其他人错过的东西。启用复制后,SQL Server 会添加一个名为“distribution”的附加系统数据库。 (2认同)