【问题标题】:SQL Server - get all databases with MDF and LDF File LocationSQL Server - 使用 MDF 和 LDF 文件位置获取所有数据库
【发布时间】:2014-11-21 08:27:15
【问题描述】:

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

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

【问题讨论】:

  • 请使用表,sys.database_files
  • @MehdiHaghshenas 如果您在 Google 上花费 2 分钟,mssql get all databases and locations 会返回 2600 万条结果。
  • 具有讽刺意味的是,这个问题现在是谷歌搜索上面建议的确切搜索短语时的第三个结果
  • 投票重新开放。 OP付出多少努力都没有关系。它现在在 Google 上排名靠前,显然帮助了很多人。

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


【解决方案1】:
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

【讨论】:

  • 不加入数据库表,你可以SELECT DB_NAME(database_id) AS DBName
【解决方案2】:

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 文件,它就会变得复杂。
【解决方案3】:

试试这个查询:

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

【讨论】:

  • 虽然这回答了问题,但这基本上是其他答案的重复。在这种情况下,解决这个问题的正确方法是支持其他答案(一旦你有足够的声誉),而不是重复另一个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多