SQLSERVER不借助代理如何创建备份

前言:这个方案要借助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(大写)命令行查询并且完成后退出

3、最后就是创建计划任务了

参考:

官方文档
官方文档
凉拌土豆块的博客

猜你喜欢

转载自blog.csdn.net/weixin_39753511/article/details/106196200