前言:这个方案要借助sqlcmd,通过创建一个存储过程,然后使用计算机的计划任务,去执行我们创建的bat
1、存储过程
USE [court_juror]
GO
/****** 删除重复的
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[my_backup_wz]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[my_backup_wz]
GO
USE [court_juror]
GO
/****** Object: StoredProcedure [dbo].[my_backup_wz] Script Date: 05/15/2020 23:33:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <>
-- Create date: <2020.5.15>
-- Description: <完整备份>
-- =============================================
create PROCEDURE [dbo].[my_backup_wz]
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @dateTime VARCHAR(20) --日期时间
DECLARE @sqlCommand NVARCHAR(1000) --命令名称
--设置当前日期和时间,格式为年月日
SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),112),'/','')
SET @sqlCommand = 'BACKUP DATABASE court_juror TO DISK = '+ '''C:\_DB\wz\court_juror'+@dateTime+'_wz'+'.bak'''+ 'WITH DIFFERENTIAL,STATS =5;'
--DIFFERENTIAL差异备份
--COMPRESSION 压缩
--BACKUP LOG AdventureWorks2012 TO MyAdvWorks_FullRM_log1; 创建日志备份
--开始执行备份命令
EXEC(@sqlCommand)
END
GO
注意:备份的目录需要手动创建,且需要有读写权限。日志的增长方式,需要设置成自动增长。不然,会报错哦。
2、bat脚本
sqlcmd -S . -E -Q "EXEC court_juror.dbo.my_backup_cy"
备注:
Sqlcmd 是SQL自带的命令工具,
-S(大写)是指定服务器,在本机的话就用点(.)表示,两边都有空格
-E(大写)表明是信任的连接
-Q(大写)命令行查询并且完成后退出