PROCEDURE
[BACKUP_DATABASE]
AS
--SUBSTRING(CONVERT(VARCHAR(50),
GETDATE(),
120),1,10)为当时日期,格式为yyyy-mm-dd
DECLARE
@S
VARCHAR(250)
SET
@S
=
'D:\Database\AAA['
+
SUBSTRING(CONVERT(VARCHAR(50),
GETDATE(),
120),1,10)
+
'].bak'
BACKUP
DATABASE
[AAA]
TO
DISK
=
@S
WITH
NOFORMAT,
NOINIT,
NAME
=
N'TestDB1-完整
数据库
备份',
SKIP,
NOREWIND,
NOUNLOAD
--备份[BBB]数据库
--DECLARE
@S
VARCHAR(250)
SET
@S
=
'D:\Database\BBB['
+
SUBSTRING(CONVERT(VARCHAR(50),
GETDATE(),
120),1,10)
+
'].bak'
BACKUP
DATABASE
[BBB]
TO
DISK
=
@S
WITH
NOFORMAT,
NOINIT,
NAME
=
N'TestDB1-完整
数据库
备份',
SKIP,
NOREWIND,
NOUNLOAD
--备份[CCC]数据库
--DECLARE
@S
VARCHAR(250)
SET
@S
=
'D:\Database\CCC['
+
SUBSTRING(CONVERT(VARCHAR(50),
GETDATE(),
120),1,10)
+
'].bak'
BACKUP
DATABASE
[CCC]
TO
DISK
=
@S
WITH
NOFORMAT,
NOINIT,
NAME
=
N'TestDB1-完整
数据库
备份',
SKIP,
NOREWIND,
NOUNLOAD
GO
这里采用指定数据库名称的方式,不是动态自动获取系统中所有数据库,希望可以给你提供一种思路。假如系统中只有三个数据库AAA、BBB和CCC,如果有四个或者多个,同理添加即可!
个人认为,既然有数据库,就要有DBA,DBA不但是一种职位,还是一种态度。备份数据库就应该是DBA的事情,而想使用存储过程来备份数据库是不现实的,作为某个时间点的镜像倒是还可以。因为数据库崩溃了,如果数据丢失,存储过程再怎么做也没办法恢复。
另外,存储过程不是拿来做备份的,而是提供可靠和高效率计算的。
建议:使用批处理脚本,创建定时任务,调用 mysqldump.exe 程序来做备份。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)