资源描述:
《数据库备份恢复方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用SQL语言,实现数据库的备份/恢复的功能体现了SQLServer中的四个知识点:1. 获取SQLServer服务器上的默认目录2. 备份SQL语句的使用3. 恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理4. 作业创建SQL语句的使用 /*1.--得到数据库的文件目录 @dbname指定要取得目录的数据库名 如果指定的数据不存在,返回安装SQL时设置的默认数据目录 如果指定NULL,则返回默认的SQL备份目录名----*//*--调用示例 select数据库文件目录=dbo.f_getdb
2、path('tempdb') ,[默认SQLSERVER数据目录]=dbo.f_getdbpath('') ,[默认SQLSERVER备份目录]=dbo.f_getdbpath(null)--*/ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[f_getdbpath]')andxtypein(N'FN',N'IF',N'TF'))dropfunction[dbo].[f_getdbpath]GOcreatefunctionf_getdbpath(@db
3、namesysname)returnsnvarchar(260)asbegin declare@renvarchar(260) if@dbnameisnullordb_id(@dbname)isnull select@re=rtrim(reverse(filename))frommaster..sysdatabaseswherename='master' else select@re=rtrim(reverse(filename))frommaster..sysdatabaseswherename=@dbname if@db
4、nameisnull set@re=reverse(substring(@re,charindex('',@re)+5,260))+'BACKUP' else set@re=reverse(substring(@re,charindex('',@re),260)) return(@re)endgo/*2.--备份数据库--*//*--调用示例--备份当前数据库execp_backupdb@bkpath='c:',@bkfname='db_DATE_db.bak'--差异备份当前数据库execp_backupdb@b
5、kpath='c:',@bkfname='db_DATE_df.bak',@bktype='DF'--备份当前数据库日志execp_backupdb@bkpath='c:',@bkfname='db_DATE_log.bak',@bktype='LOG'--*/ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[p_backupdb]')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropprocedure[dbo
6、].[p_backupdb]GOcreateprocp_backupdb@dbnamesysname='', --要备份的数据库名称,不指定则备份当前数据库@bkpathnvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录@bkfnamenvarchar(260)='', --备份文件名,文件名中可以用DBNAME代表数据库名,DATE代表日期,TIME代表时间@bktypenvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF'差异备份,'LOG'
7、日志备份@appendfilebit=1 --追加/覆盖备份文件as declare@sqlvarchar(8000) ifisnull(@dbname,'')=''set@dbname=db_name() ifisnull(@bkpath,'')=''set@bkpath=dbo.f_getdbpath(null) ifisnull(@bkfname,'')=''set@bkfname='DBNAME_DATE_TIME.BAK' set@bkfname=replace(replace(replace(@bkf
8、name,'DBNAME',@dbname) ,'DATE',convert(varchar,getdate(),112)) ,'TIME',replace(convert(varchar,getdate(),108),':','')) set@