191.得到SQL中的数据库目录

94 阅读1分钟
/*--得到数据库的文件目录
	
	@dbname 指定要取得目录的数据库名
			如果指定的数据不存在,返回安装SQL时设置的默认数据目录
			如果指定NULL,则返回默认的SQL备份目录名
/*--调用示例
	select 数据库文件目录=dbo.f_getdbpath('tempdb')
		,[默认SQL SERVER数据目录]=dbo.f_getdbpath('')
		,[默认SQL SERVER备份目录]=dbo.f_getdbpath(null)
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_getdbpath]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_getdbpath]
GO

create function f_getdbpath(@dbname sysname)
returns nvarchar(260)
as 
begin
	declare @re nvarchar(260)
	if @dbname is null or db_id(@dbname) is null
		select @re=rtrim(reverse(filename)) from master..sysdatabases where name='master'
	else
		select @re=rtrim(reverse(filename)) from master..sysdatabases where name=@dbname

	if @dbname is null
		set @re=reverse(substring(@re,charindex('\',@re)+5,260))+'BACKUP'
	else
		set @re=reverse(substring(@re,charindex('\',@re),260))
	return(@re)
end
go