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)
这可能有所帮助.
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)