--Description:备份指定数据到指定路径,第一次完整备份、每月1号完整备份、每周一完整,每天增量备份
--====================================
ALTER procedure [dbo].[BackupDatabase]
@DatabaseName nvarchar(50),
@BackupPath varchar(200),
@IsDelLog int --1表示删除日志
as
declare @sql nvarchar(500);declare @dateName nvarchar(50);
declare @ClareSign int;set @ClareSign=1;
set @dateName='_'+SUBSTRING(replace(CONVERT(char(10),getdate(),21),'-',''),3,6);
if(not exists(select top 1 1 from msdb.dbo.backupset where database_name=@DatabaseName))
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'f_'+@DatabaseName+@dateName+'.bak'' WITH FORMAT'
 set @ClareSign=0;
end
else if(DATEPART(DAY,getdate())=1)
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'m_'+@DatabaseName+@dateName+'.bak'' WITH FORMAT'
end
else if(DATEPART(weekday,getdate())=2)
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'w_'+@DatabaseName+@dateName+'.bak'' WITH FORMAT'
end
else
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'d_'+@DatabaseName+@dateName+'.bak'' WITH differential'
 set @ClareSign=0;
end
exec (@sql)
--清除日志
if(@@ERROR=0 and @ClareSign=1 and @IsDelLog=1)
begin
 --简单模式
 exec('ALTER DATABASE '+@DatabaseName +' SET RECOVERY SIMPLE WITH NO_WAIT;ALTER DATABASE '+@DatabaseName +' SET RECOVERY SIMPLE')
 insert into ToolsDB.dbo.TestLog(LogName,Remark) values('备份日志测试',GETDATE())
 declare @FileName nvarchar(50)
 if OBJECT_ID('tempdb.dbo.##bt5') is not null drop table ##bt5 --清除全局临时表
 exec('select name into ##bt5 from '+@DatabaseName+'.dbo.sysfiles where groupid=0')
 declare cursor_name cursor for
 select name from ##bt5
 open cursor_name
 fetch next from cursor_name into @FileName
 while(@@FETCH_STATUS=0)
 begin
 exec('use '+@DatabaseName+' DBCC SHRINKFILE (N'''+@FileName+''' ,1, TRUNCATEONLY)')
 fetch next from cursor_name into @FileName
 end
 close cursor_name
 deallocate cursor_name
 
 --还原为完全模式
 exec('ALTER DATABASE '+ @DatabaseName+' SET RECOVERY FULL WITH NO_WAIT;ALTER DATABASE '+ @DatabaseName+' SET RECOVERY FULL')
 if OBJECT_ID('tempdb.dbo.##bt5') is not null drop table ##bt5 --清除全局临时表
end

SQL Server 备份数据库到指定路径,任务实现的更多相关文章

  1. C#备份及还原数据库的实现代码(粗略) // 利用C#还原数据库(SQL SERVER)备份文件到指定路径

    C#数据库备份及还原 1.在用户的配置时,我们需要列出当前局域网内所有的数据库服务器,并且要列出指定服务器的所有数据库,实现代码如下: 取得数据库服务器列表: public ArrayList Get ...

  2. Data Base sql server 备份数据库

    sql server 备份数据库 1.维护计划向导: 右键维护计划-维护计划向导-然后安装提示: 勾选自己要干的事,比如:完整备份数据库.差异备份数据库等等 2.作业计划: 如下图: SQL Serv ...

  3. SQL SERVER备份数据库文件(使用SSMS)

    微软的SQL SERVER是市面占有率比较大的数据库,在平时的使用与维护中,备份数据是一件十分重要的! 备份操作,用微软自带的ssms(SQL Server Management Studio)工具即 ...

  4. SQL Server 恢复数据库至指定时间点

    发生数据库误删的情况下,及时恢复数据到误操作前的状态 工具/原料   SQL Server Management Studio 数据库完整备份及日志备份 必备条件   1 数据库右键属性,在选项中查看 ...

  5. 使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)

    1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip ...

  6. SQL Server ----- 备份数据库 生成(.bak)文件

    转移数据库   备份数据库 选中数据库 进入后界面如图 选择合适位置进行备份 注意:选择配置好保存位置的 成功后出现 如果出现错误. 还有一种可能是哪个文件夹中已经有了一个 把文件家中的那个删了 还原 ...

  7. SQL SERVER 备份数据库时候错误处理

    当备份数据库时候出现如下错误时候 只需要删除备份目标就行了

  8. SQL server 2008数据库的备份与还原、分离(转)

    SQL server 2008数据库的备份与还原.分离(转)   一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Ser ...

  9. SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原

    sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...

随机推荐

  1. MySQL 导出函数与存储过程

    C:\Users\yan>mysqldump -u用户 -p -n -t -d -R 数据库 > .sql Enter password: ******** C:\Users\yan> ...

  2. HDU 4902 Nice boat 成段线段树

    操作1 的时候标记deng[rt]表示以下一段数都是与当前节点的值同样 下次操作2时直接对有deng标记的节点gcd更新 (可能还能够更简单) #include <stdio.h> #in ...

  3. SAP SQ01怎样从开发机传输到生产机

    确认你的Query是本地的还是全局的(跨Client).假设是后者,会自己主动生成传输请求,用标准传输方式就可以. 假设是本地的Query,有两种方式: 方式1:复制成全局的,让后生成传输请求 方式2 ...

  4. java 复制Map对象(深拷贝与浅拷贝)

      java 复制Map对象(深拷贝与浅拷贝) CreationTime--2018年6月4日10点00分 Author:Marydon 1.深拷贝与浅拷贝 浅拷贝:只复制对象的引用,两个引用仍然指向 ...

  5. Oracle 去重查询

      Oracle 去重查询 CreateTime--2018年2月28日15:38:45 Author:Marydon (一)使用distinct --查询指定区间内表停诊字段的值 SELECT DI ...

  6. 去除DataTable重复数据的三种方法(转)

    转自:https://www.cnblogs.com/sunxi/p/4767577.html 业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需 ...

  7. JavaScript-自制日历控件(只选择年月)

    <style> *{margin: 0px; padding: 0px;} </style> <input type="text" name=&quo ...

  8. jquery api 常见 事件操作

    change.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html ...

  9. Codeigniter base_url() 返回的怎么是ip地址

    本篇文章由:http://xinpure.com/codeigniter-base-url-to-return-what-is-an-ip-address/ 简单说说情况 虽然也是有一段时间没有用过 ...

  10. Eclipse Xml编译错误Referenced file contains errors - spring-beans-4.0.xsd

    本文转自:http://josh-persistence.iteye.com/blog/2125420 在eclipse中,有时候在xml文件中,特别是于Spring相关的配置文件中,会出现一些不影响 ...