gpt4 book ai didi

sql-server - 获取 SQL Server 中所有系统数据库的列表

转载 作者:行者123 更新时间:2023-12-02 16:49:19 24 4
gpt4 key购买 nike

我知道如何获取特定服务器上存在的所有数据库的列表。

SQL 查询:

SELECT *
FROM master.sys.databases
EXEC sp_databases

但是,它为我提供了所有数据库,例如系统以及用户定义的数据库。

我想知道如何获取仅存在于 SQL Server 中的用户定义/系统数据库列表,因为我无法看到 master.sys.databases 中存在的任何列,使用它我可以过滤它以满足我的要求。

最佳答案

sys.databases 目录 View 不提供区分用户数据库和系统数据库的列。然而,这些名字是众所周知的,如 documentation 中所列。可根据需要用于排除它们。此外,您可能希望排除 SSISDB 目录和分发数据库(如果存在)。下面是一个示例查询。

SELECT name
FROM sys.databases
WHERE
name NOT IN(N'master',N'model',N'tempdb',N'msdb',N'SSISDB')
AND is_distributor = 0;

顺便说一句,这是 SSMS 用来枚举从跟踪中收集的系统数据库的查询片段:

WHERE
(CAST(case when dtb.name in (''master'',''model'',''msdb'',''tempdb'') then 1 else dtb.is_distributor end AS bit)=@_msparam_0)

关于sql-server - 获取 SQL Server 中所有系统数据库的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com