SQL Server - 获取所有数据库和文件

时间:2016-05-13 03:22:57

标签: sql-server sql-server-2008 sql-server-2008-r2

我知道通过执行以下操作来获取数据库名称:

month, day, year = map(int, date_string.split('/'))

我希望能够做的是返回与服务器上每个数据库相关的所有文件。要获取每个数据库的文件列表,我必须执行类似以下操作:

select * 
from master..sysdatabases 
order by Name

不幸的是,我需要使用use [database] select * from sysfiles 的使用前缀仅从我使用的数据库中提取。

理想情况下,我希望能够将其包装到一个可以通过odbc数据库监控项调用并挂钩到zabbix的视图中。

我们说我有3个数据库:

sysfiles

我想要一个会显示的视图

DB1
DB2
DB3

1 个答案:

答案 0 :(得分:3)

您可以使用sys.databasessys.master_files观点进行查询:

SELECT
    db.name,
    FileName = mf.name,
    PhysicalFileName = mf.physical_name,
    Type = mf.type_desc 
FROM sys.databases db
INNER JOIN sys.master_files mf
    ON mf.database_id = db.database_id
WHERE db.name NOT IN('msdb', 'master', 'tempdb', 'model')
ORDER BY db.name