您的位置:首页 > 数据库

(精)如何利用T_SQL实现数据库备份与还原处理之一--(如何利用sql语句,得到数据库文件目录)

2007-12-10 10:08 1311 查看
/*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

简单描述:
1.需要返回值nvarchar
2.上述用到的sql函数:
declare:定义sql变量;
db_id:返回数据库的唯一ID;
rtrim():去除空格;
reverse:反转字符,例如:原本是ABC,reverse(ABC)=CBA;
substring:获取字符串的某部分的值;
charindex:定义特别字符的开始位;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: