代码之家  ›  专栏  ›  技术社区  ›  Vinko Vrsalovic

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

  •  12
  • Vinko Vrsalovic  · 技术社区  · 16 年前

    事情是,据我所知,这并不能保证在将来得到保存。sys.databases视图和sys.sysdatabases视图都不会告诉我数据库是否被视为系统数据库。

    是否有地方可以获取这些信息(无论数据库是否被视为系统数据库)?

    4 回复  |  直到 16 年前
        1
  •  22
  •   Andrea    9 年前

    刚刚跳进 Microsoft.SqlServer.Management.Smo.Database

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

    master , model msdb tempdb 它也是一个系统db,if字段 is_distributor = 1 在视图中 sys.databases

    希望这有帮助

    吉米

        2
  •  2
  •   pwndad    7 年前

    SQLServerManagementStudio使用此

    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)
    

    为了简单起见,我删除了不相关的列,删除了orderby,并将@u msparam_0变量替换为其值1

        3
  •  0
  •   gbn    16 年前

    您可以依赖DB_ID()函数<=4.

    你必须非常努力才能改变这个。。。

        4
  •  -4
  •   Bohemian    13 年前

    select * from sys.databases
    where owner_sid != 0x01
    
        5
  •  -6
  •   Mladen Prajdic    16 年前

    不,没有这样的选择。我想您可以检查sys.databases.owner_sid=0x01的id。

    推荐文章