资源描述:
《c#实现sql备份》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、c#实现sql备份非常简单利用T-SQL完成你所要做的就是控制流程保存变量分析字符串这种方式感觉实现起来也不错,我是使用这种方式来完成数据库备份还原的功能的。 需要指出下面这些存储过程是在上学吧网上搜索到的。谢谢代码的提供者。在此转载 利用T-SQL语句,实现数据库的备份与还原的功能 体现了SQLServer中的四个知识点: 1.获取SQLServer服务器上的默认目录 2.备份SQL语句的使用 3.恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理 4.作业创建SQL语句的使用 /*1.--得到数据库的文件目录 @dbname指定要取得目录的数据库名 如果指定的数据不存在,返回
2、安装SQL时设置的默认数据目录 如果指定NULL,则返回默认的SQL备份目录名 */ /*--调用示例 seleCT数据库文件目录=dbo.f_getdbpath('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]
3、.[f_getdbpath] GO createfunctionf_getdbpath(@dbnamesysname) returnsnvarchar(260) as begin declare@renvarchar(260) if@dbnameisnullordb_id(@dbname)isnull select@re=rtrim(reverse(filename))frommaster..sysdatabaseswherename='master' else select@re=rtrim(reverse(filename))frommaster..sysdatabaseswherenam
4、e=@dbname if@dbnameisnull set@re=reverse(substring(@re,charindex('',@re)+5,260))+'BACKUP' else set@re=reverse(substring(@re,charindex('',@re),260)) return(@re) end go /*2.--备份数据库 */ /*--调用示例 --备份当前数据库 execp_backupdb@bkpath='c:',@bkfname='db_DATE_db.bak' --差异备份当前数据库 execp_backupdb@bkpath='c:',@
5、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].[p_backupdb] GO createprocp_backupdb @d
6、bnamesysname='',--要备份的数据库名称,不指定则备份当前数据库 @bkpathnvarchar(260)='',--备份文件的存放目录,不指定则使用SQL默认的备份目录 @bkfnamenvarchar(260)='',--备份文件名,文件名中可以用DBNAME代表数据库名,DATE代表日期,TIME代表时间 @bktypenvarchar(10)='DB',--备份类型:'DB'备份数据库,'DF'差异备份,'LOG'日志备份 @appendfilebit=1--追加/覆盖备份文件 as declare@sqlvarchar(8000) ifisnull(@dbn
7、ame,'')=''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(@bkfname,'D