如何让SQL Server自动定时备份数据库并按日期命名

如何让SQL Server自动定时备份数据库并按日期命名,第1张

SQLServer的维护计划里面自带了备份数据库任务,但不会自动按日期命名,不方便,下面的方法是以存储过程来解决的,以sql2000为例:

首先要确认SQL Server Agent服务是在启动状态

下一步,我们来创建作业,在创建作业之前,我们需要创建备份数据库及命名的存储过程

比如是对TestDB *** 作,打开查询分析器,把下面的存储过程拷到里面执行下就行了,当然了,命名规则可以自动更改

View Code

这样就创建了一个BackupDatabase的存储过程

下面来创建作业吧

常规里添加名称,选择下分类就行了,下面的步骤很重要

添加步骤的时候,有点很重要,就是执行刚才我们创建的存储过程如图

use [TestDB]

exec BackupDatabase 'E:\SqlData\TestDB\'

最后设置下自动备份的时间,也就是调度下即可

这样我们就创建一个这样定时备份数据库,以时间命名的作业

到了指定的时间会自动执行备份数据库,其他的sql2005和sql2008和sql2000大同小异

你的意思应该是一台主服务器,一台备份服务器,想把主服务器上的数据每天定时备份到备份服务器吧。这个要使用数据复制功能了。

准备工作:

1发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户

--我的电脑

--控制面板

--管理工具

--计算机管理

--用户和组

--右键用户

--新建用户

--建立一个隶属于administrator组的登陆windows的用户

2在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录, *** 作:

我的电脑--D:\ 新建一个目录,名为: PUB

--右键这个新建的目录

--属性--共享

--选择"共享该文件夹"

--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限

--确定

3设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)

开始--程序--管理工具--服务

--右键SQLSERVERAGENT

--属性--登陆--选择"此账户"

--输入或者选择第一步中创建的windows登录用户名

--"密码"中输入该用户的密码

4设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)

企业管理器

--右键SQL实例--属性

--安全性--身份验证

--选择"SQL Server 和 Windows"

--确定

5在发布服务器和订阅服务器上互相注册

企业管理器

--右键SQL Server组

--新建SQL Server注册

--下一步--可用的服务器中,输入你要注册的远程服务器名--添加

--下一步--连接使用,选择第二个"SQL Server身份验证"

--下一步--输入用户名和密码

--下一步--选择SQL Server组,也可以创建一个新组

--下一步--完成

6对于只能用IP,不能用计算机名的,为其注册服务器别名

(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)

开始--程序--Microsoft SQL Server--客户端网络实用工具

--别名--添加

--网络库选择"tcp/ip"--服务器别名输入SQL服务器名

--连接参数--服务器名称中输入SQL服务器ip地址

--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号

==============================================================================

正式开始:

1配置发布服务器

a 选中指定 [服务器] 节点

b 从 [工具] 下拉菜单的 [复制] 子菜单中选择 [发布、订阅服务器和分发] 命令

c 系统d出一个对话框点 [下一步] 然后看着提示 *** 作

--直到"指定快照文件夹"

--在"快照文件夹"中输入准备工作中创建的目录: \\<服务器名>\pub

一[下一步] 直 *** 作到完成。

d 当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器

同时也生成一个分发数据库(distribution)

---------------------------------------------------------------------------

2创建发布

a 选中指定的服务器

b 从 [工具] 菜单的 [复制] 子菜单中选择 [创建和管理发布] 命令。此时系统会d出

一个对话框

c 选择要创建发布的数据库,然后单击 [创建发布]

d 在 [创建发布向导] 的提示对话框中单击 [下一步] 系统就会d出一个对话框。对话

框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个

大家可以去看看帮助)

e 单击 [下一步] 系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在

不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行

"SQL SERVER 2000"的数据库服务器

f 单击 [下一步] ,选择要发布的对象(如表,视图,存储过程,一般是表)

g 然后 [下一步] 直到 *** 作完成。当完成出版物的创建后创建出版物的数据库也就变成了

一个共享数据库。

---------------------------------------------------------------------------

3设计订阅

a 选中指定的订阅服务器

b 从 [工具] 下拉菜单中选择 [复制] 子菜单的 [请求订阅]

c 按照提示单击 [下一步] *** 作直到系统会提示检查SQL SERVER代理服务的运行状态,执行

复制 *** 作的前提条件是SQL SERVER代理服务必须已经启动。

d 单击 [完成] 完成订阅 *** 作。

----------------------------------------------------------------------------

完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?

这里可以通过这种方法来快速看是否成功。

展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度

把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。

接下来就是判断复制是否成功了打

开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面

看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。

我现在用的作业 定时备份

declare @fileName varchar(100)

declare @preName varchar(100)

declare @path varchar(100)

set @path='D:\db_backup\'

set @fileName ="数据库名"+"bak"

set @preName = @path+@fileName

BACKUP DATABASE isagDX TO DISK = @preName

首先利用数据库自带的命令行工具将数据库备份下来,例如对MySQL将数据库备份到D:datasql(具体查阅数据库说明书)

mysqlmp

然后将该文件以日期参量重名名。如果指定保留N天的数据可能有一定困难,不过既然要求7天,不妨以星期作为区分。

假设文件名具有格式“data_日期sql”,则更名语句为(建议先创建后改名,对于很大的数据库可能要备份很长时间并超过0点)

ren"datasql""data_%date%sql"

若系统时间格式为“2009-04-05星期日”,则产生文件“data_2009-04-05星期日txt”。

获取星期几的语句:%date:~11,3%

其中11表示从第11个字符开始(从0开始计算),总共截取3个字符。由此可获得字符串“星期日”。重名名前,删除以data_开头,包含“星期日”的文件

del"data_%date:~11,3%sql"

这样就把上星期的那个文件删除了。

注意:如果系统日期格式与上面的不一致,数字需重新计算,特别是若日期中含有“/”、“:”等字符会导致创建文件失败,此时年月日星期均需手动提取,例如对“04/05/2009Sun”,应使用“%DATE:~6,4%%DATE:~0,2%%DATE:~3,2%%DATE:~11,3%”得到“20090405Sun”。查看日期格式可使用“echo%date%”。

另外,如果某项(时间格式、文件名、路径等)包含空格则必须使用引号。

脚本源代码

mysqlmp

del"D:data_%date:~11,3%sql"

ren"D:datasql""data_%date%sql"

编为一个bat文件,添加计划任务,每天定时执行即可。

这里提供两种方法:

1,写成存储过程,建立作业定时备份

--在sql中映射一下

exec masterxp_cmdshell 'net use z: \\computer_name\D$ "密码" /user:computer_name\administrator'/--说明:z:是映射网络路径对应本机的盘符,与下面的备份对应

\\computer_name\D$是要映射的网络路径

computer_name是远程的计算机名,

administrator是登陆的用户名

密码 指定的administrator用户的密码--/--备份;with init覆盖 07noinit添加

backup database 库名 to disk='E:\H_BACKUPbak' with init--COPYexec masterxp_cmdshell 'copy E:\H_BACKUPbak z:'

--删除(这句可以去掉)

--exec masterxp_cmdshell 'del E:\H_BACKUPbak'

--完成后删除映射

exec masterxp_cmdshell 'net use z: /delete'

2,调度企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名"中输入步骤名 --"类型"中选择"Transact-SQL 脚本(TSQL)" --"数据库"选择执行命令的数据库 --"命令"中输入要执行的语句:

declare @strsql varchar(1000)

declare @strdirname varchar(50)

declare @strcmd varchar(50)

declare @strsend varchar(1000)

declare @strdate varchar(50)

exec masterxp_cmdshell 'net use \\1921680151\d$ Password /user:1921680151\administrator'

set @strsql='backup database new_his to disk=''\\1921680151\d$\serverd\'

set @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')+'12'

set @strcmd='md \\1921680151\d$\serverd\' s

以上就是关于如何让SQL Server自动定时备份数据库并按日期命名全部的内容,包括:如何让SQL Server自动定时备份数据库并按日期命名、sql如何实现每日定时远程备份、2000 SQL数据库自动定时备份怎么 用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9378349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存