SQL Server - 获取所有带有MDF和LDF文件位置的数据库

27

我需要一个T-SQL查询,列出SQL Server 2008中所有数据库的列表,显示:

  • 数据库的名称和
  • .mdf.ldf文件的位置。

请使用表格 sys.database_files。 - Jithin Shaji
@MehdiHaghshenas 如果你在谷歌上花2分钟搜索“获取所有数据库和位置的 Mssql”,将返回 2600 万个结果。 - Jaques
2
具有讽刺意味的是,当你要求搜索上述确切短语时,这个问题现在排名第三。 - rdans
7
投票以重新开放。不论原帖作者花费了多少心血,它现在是谷歌上的高排名结果,并且显然有很多人受益于它。 - Heinzi
3个回答

56
SELECT
    db.name AS DBName,
    type_desc AS FileType,
    Physical_Name AS Location
FROM
    sys.master_files mf
INNER JOIN 
    sys.databases db ON db.database_id = mf.database_id

输入图像描述


4
不必加入数据库表格,您可以使用“SELECT DB_NAME(database_id)AS DBName”语句。 - sam yi

8

enter image description here

select 
    d.name as 'database',
    mdf.physical_name as 'mdf_file',
    ldf.physical_name as 'log_file'
from sys.databases d
inner join sys.master_files mdf on 
    d.database_id = mdf.database_id and mdf.[type] = 0
inner join sys.master_files ldf on 
    d.database_id = ldf.database_id and ldf.[type] = 1

我不喜欢这个解决方案,因为如果每个数据库有许多mdf/log文件,它会变得复杂。 - coding Bott

-4

尝试这个查询:

SELECT name [Database Name], physical_name [File Location],size *(8.0 / 1024) /1024 [Size in GBs]
FROM sys.master_files

虽然这回答了问题,但基本上是其他答案的重复。在这种情况下,正确的做法是赞同其他答案(一旦您有足够的声望),而不是重复另一个答案。 - TT.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接