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

 /*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:定义特别字符的开始位;

你可能感兴趣的:(sql,sql,数据库,server,function,object,null)