CREATE  PROCEDURE [dbo].[SP_DBBackup_EveryNight_Local]
@cycle INT, ---保存周期
@IsLocal INT, ---是否为本地 0表示是 1表示否
@SavePath NVARCHAR(100), ---文件保存路径 \\192.168.19.1\DataBaseBack
@DBPrefix NVARCHAR(50), ---生成文件的前缀
@Server VARCHAR(50), ---服务器IP 192.168.19.1
@UserName VARCHAR(50), ---登录服务器用户名 administrator
@PassWord VARCHAR(20) ---登录服务器密码 2016
AS
BEGIN
DECLARE @backpath2 VARCHAR(100)
DECLARE @command VARCHAR(200) --创建临时表
CREATE TABLE #Filetabel
(
FILEPATH VARCHAR(100) NULL
)
--调用dos命令登录服务器
IF @IsLocal = 1
BEGIN
SET @command = 'net use ' + @SavePath + ' ' + @PassWord + ' /user:' + @Server + '\' + @UserName
EXEC master..xp_cmdshell @command
END
--将共享目录所有文件名添加至临时表
SET @command = 'dir /b ' + @SavePath
INSERT INTO #Filetabel
EXEC master..xp_cmdshell @command DELETE FROM #Filetabel
WHERE FILEPATH IS NULL WHILE EXISTS ( SELECT *
FROM #Filetabel )
BEGIN
DECLARE @fileName VARCHAR(100)
SET @fileName = ( SELECT TOP 1
*
FROM #Filetabel
ORDER BY FILEPATH
)
--定义变量获取文件时间
DECLARE @fileTime VARCHAR(20)
DECLARE @fDateTime DATETIME
IF @fileName IS NOT NULL
BEGIN
SET @fileTime = SUBSTRING(@fileName, 17, 8)
SET @fDateTime = CONVERT(DATETIME, @fileTime)
DECLARE @lastTime DATETIME
SET @lastTime = DATEADD(DAY, -@cycle,
CONVERT(VARCHAR(10), GETDATE(), 111))
IF @fDateTime <= @lastTime
BEGIN
--删除备份
DECLARE @filePath VARCHAR(100)
SET @filePath = 'del ' + @SavePath + '\' + @fileName
EXEC master..xp_cmdshell @filePath
END --删除该条数据
DELETE FROM #Filetabel
WHERE FILEPATH = @fileName
END
END --删除临时表
DROP TABLE #Filetabel
--将数据库备份到服务器
SET @backpath2 = @SavePath + '\' + @DBPrefix + '_' + REPLACE(CONVERT(VARCHAR(10), GETDATE(), 120),
'-', '') + '_back.bak'
BACKUP DATABASE [LGS] TO DISK=@backpath2 WITH INIT ,FORMAT
END
GO

  

执行EXEC [dbo].[SP_DBBackup_EveryNight_Local] 5,0,'F:\LGS_Back','LGS','','',''

sql server 定时备份数据库的更多相关文章

  1. SQL Server 2008备份数据库失败,拒绝访问的原因

    原文:SQL Server 2008备份数据库失败,拒绝访问的原因 备份数据到特定目录是出现拒绝访问,然后测试备份到C盘根目录正常. 查了下原因: 是因为那个目录没有Authenticated Use ...

  2. SQL Server 远程备份数据库

    在一些涉及到数据库的项目中,经常会有定时备份数据库的需要.定时备份到本机的话,还是挺容易的,计划任务就可以完成,但如果是整机挂了,那备份到本机是没意义的,那么就需要来考虑备份到局域网中,其它电脑里. ...

  3. Sql Server自动备份数据库,定期删除备份

    //实现:每天自动备份数据库,定期删除备份 //步骤:[开始]--[所有程序]--[Microsoft SQL Server 2005]--[SQL Server Management Studio] ...

  4. sql server 压缩备份数据库

    转自 https://www.cnblogs.com/527289276qq/p/6273291.html 今天需要把一个省外项目的数据库从服务器上备份.拷贝到本机(跨地域传输数据库备份文件). 连上 ...

  5. sql server 批量备份数据库

    很多时候,我们都需要将数据库进行备份,当服务器上数据库较多时,不可能一个数据库创建一个定时任务进行备份,这时,就需要进行批量的数据库备份操作,好了,废话不多说,具体实现语句如下: --开启文件夹权限 ...

  6. sql server 批量备份数据库及删除N天前的备份数据

    很多时候,我们都需要将数据库进行备份,当服务器上数据库较多时,不可能一个数据库创建一个定时任务进行备份,这时,就需要进行批量的数据库备份操作,好了,废话不多说,具体实现语句如下: 1 2 3 4 5 ...

  7. sql server异地备份数据库

    --注意:异地备份数据库,需要先开启备份文件夹的网络共享,数据库选择master --打开允许执行xp_cmdshell exec master..xp_cmdshell 'net use \\192 ...

  8. sql server 定时备份 脚本

    ) DECLARE @date DATETIME SELECT @date = GETDATE() SELECT @filename = 'G:\backup\NewPlulishSQL-' + CA ...

  9. SQL Server 2008 备份数据库

    1.打开SQL , 找到要备份的数据库 , 右键 >> 任务 >>备份 2.弹出 [ 备份数据库对话框 ] ,如图: 3.点击加入 [ button ] . 例如以下图: 4. ...

随机推荐

  1. php课程 4-17 数组键值操作函数有哪些

    php课程 4-17  数组键值操作函数有哪些 一.总结 一句话总结:多看学习视频 1.php中数组的键值操作函数有哪6个? • array_values();获取数组中的值• array_keys( ...

  2. js中如何删除某个元素下面的所有子元素?(两种方法)

    js中如何删除某个元素下面的所有子元素?(两种方法) 一.总结 方法一:通过元素的innerHTML属性 元素element.innerHTML=""; 方法二:通过元素的remo ...

  3. Android addTextChangedListener(文本监听)参数解释及实现EditText字数监听

    由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher.它有三个成员方法,第一个after很简单,这个方法就是在EditT ...

  4. Opencv Surf算子中keyPoints,描述子Mat矩阵,配对向量DMatch里都包含了哪些好玩的东东?

    Surf算法是一把牛刀,我们可以很轻易的从网上或各种Opencv教程里找到Surf的用例,把例程中的代码或贴或敲过来,满心期待的按下F5,当屏幕终于被满屏花花绿绿的小圆点或者N多道连接线条霸占时,内心 ...

  5. .NETCore 实现容器化Docker与私有镜像仓库管理

    原文:.NETCore 实现容器化Docker与私有镜像仓库管理 一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技 ...

  6. css+html+js实现多级下拉和弹出菜单

    本文将使用css+html+js实现横向菜单.具有多级弹出菜单下拉. 首先我们来看看效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgy ...

  7. Qt多线程和GUI界面假死(run()是线程的入口,就像main()对于应用程序的作用。分析QThread::exec函数的源码,旧的QMutexLocker模式其实很好用,挡住别人进入抢占资源,可照抄)good

    QThread的常见特性: run()是线程的入口,就像main()对于应用程序的作用.QThread中对run()的默认实现调用了exec(),从而创建一个QEventLoop对象,由其处理该线程事 ...

  8. Android Studio中创建java项目

    1.创建普通的android工程 2.创建一个module 3.module类型选择java library 4.填写libary和class的名字 5.生成的工程如图所示 6.然后点击Run --- ...

  9. RStudio 的使用

    0. 基本 路径查看和设置: getwd() ⇒ 查看路径 setwd() ⇒ 设置路径: 1. 快捷键 ctrl+shift+c:多行注释:选中待注释的代码段,按下 ctrl+shift+c(c 表 ...

  10. 利用WPF建立自己的3d gis软件(非axhost方式)(十二)SDK中的导航系统

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(十二)SDK中的导航系统 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew ...