有什么方法可以快速判断哪个数据库(如果有)附加到.mdf文件?

Jer*_*ins 7 sql sql-server sql-server-2005 mdf sql-server-2008

假设SQL Server 2005/2008具有大量数据库.有没有办法快速判断哪个数据库(如果有)附加到特定的.mdf文件?

我们已经删除了一些数据库,并希望清理一些挥之不去的.mdf来清理服务器上的空间.目前,我所知道的唯一方法是在Management Studio中逐个查看每个数据库的属性,并列出它们附加到的文件.寻找比这更有效的东西,如果有的话.

gbn*_*gbn 11

对于该数据库的第一个文件(id = 1),sys.master_files每个数据库包含一行.也就是说,对于每个数据库,系统表总是在fileid = 1中

这就是你所需要的:

SELECT
   DB_NAME(database_id), physical_name
FROM
   sys.master_files
Run Code Online (Sandbox Code Playgroud)


Joe*_*lli 9

这可能有所帮助.

declare @files table (
    db_name sysname,
    physical_name nvarchar(260)
)

insert into @files
    exec sp_MSforeachdb 'select "?", physical_name from ?.sys.database_files'

select db_name, physical_name 
    from @files
Run Code Online (Sandbox Code Playgroud)