日期:2014-05-18  浏览次数:20808 次

如何获得数据库物理文件名和路径?
不是在企业管理器中啊

    希望在程序中获得文件名和路径后,先分离,再删除数据库

    但物理文件有可能不在默认目录下



------解决方案--------------------
sp_helpfile
------解决方案--------------------
exec sp_helpfile
------解决方案--------------------
/**********************************
* 备注:注意个别系统数据库的文件标识名与文件名有不同。
* 一般我们创建用户数据库都默认设置是相同的。
* 希望对你能有作用。
***********************************/
DECLARE @dbName VARCHAR(100), @returnValue VARCHAR(200)
SET @dbName=N 'master '
IF SERVERPROPERTY ( 'BuildClrVersion ') is not null
BEGIN
--PRINT 'Sql Server 2005 '
SET @returnValue= (SELECT SUBSTRING(physical_name, 1, CHARINDEX(@dbName+ '.mdf ', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = DB_ID(@dbName) AND file_id = 1)
END
ELSE
BEGIN
--PRINT 'Sql Server 2000 '
SET @returnValue= (SELECT SUBSTRING(filename, 1, CHARINDEX(@dbName+ '.mdf ', LOWER(filename)) - 1) FROM master..sysaltfiles WHERE dbid = DB_ID(@dbName) AND fileid = 1)
END
SELECT @returnValue

------解决方案--------------------
select name,filename from sysfiles

/*
name filename
--------- -------------------------
pubs C:\Program Files\Microsoft SQL Server\MSSQL\data\pubs.mdf
pubs_log C:\Program Files\Microsoft SQL Server\MSSQL\data\pubs_log.ldf
(所影响的行数为 2 行)
*/