SQL2008备份

To_Gether 2014-08-11 03:59:59
做SQL2008备份维护计划不能自动执行啊。
想找个大师帮写个批处理做SQL2008的完整和差异备份,到D盘BACKUP的目录。
可以实现吗?
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-08-12
  • 打赏
  • 举报
回复
引用 4 楼 mafia8940 的回复:
也没见出什么问题 ,就是不能执行哦。 就把@dbname值改为数据库名就好了是吧。其他不用修改吧。
使得,盘符你自己根据需要改吧,我已经写死D:\Backup了
To_Gether 2014-08-12
  • 打赏
  • 举报
回复
也没见出什么问题 ,就是不能执行哦。 就把@dbname值改为数据库名就好了是吧。其他不用修改吧。
發糞塗牆 2014-08-11
  • 打赏
  • 举报
回复
完整备份,你替换那个@dbname的值就好了
--定义备份时间,精确到秒
DECLARE @date NVARCHAR(64)
SELECT  @date = SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 1, 4) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 6, 2) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 9, 2) + '_'
        + CONVERT(CHAR(2), DATEPART(hh, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(mi, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(ss, GETDATE()))
--定义要备份的数据库名
DECLARE @dbname NVARCHAR(20)
SET @dbname='AdventureWorks2012'  --这里是库名
DECLARE @db NVARCHAR(20)
SET @db = '' + @dbname + ''
--定义备份文件的全名
DECLARE @bakname NVARCHAR(128)
SELECT  @bakname = @db + '_' + @date
--定义备份存放路径
DECLARE @disk NVARCHAR(256)
SELECT  @disk = N'D:\BACKUP\' + @bakname + '.bak'
--定义备份描述
DECLARE @name NVARCHAR(128)
SELECT  @name = @db + '-完整 数据库 备份'
--定义错误信息
DECLARE @error NVARCHAR(128)
SELECT  @error = '验证失败。找不到数据库“' + @db + '”的备份信息。'

BACKUP DATABASE @db TO  DISK = @disk WITH   NOFORMAT, NOINIT,  
NAME =@name, SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM ;
DECLARE @backupSetId AS INT
SELECT  @backupSetId = position
FROM    msdb..backupset
WHERE   database_name = @db
        AND backup_set_id = ( SELECT    MAX(backup_set_id)
                              FROM      msdb..backupset
                              WHERE     database_name = @db
                            )
IF @backupSetId IS NULL 
    BEGIN
        RAISERROR(@error, 16, 1)
    END
RESTORE VERIFYONLY FROM  DISK = @disk WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO
差异备份:

--定义备份时间,精确到秒
DECLARE @date NVARCHAR(64)
SELECT  @date = SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 1, 4) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 6, 2) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 9, 2) + '_'
        + CONVERT(CHAR(2), DATEPART(hh, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(mi, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(ss, GETDATE()))
--定义要备份的数据库名
DECLARE @dbname NVARCHAR(20)
SET @dbname='AdventureWorks2012'  --这里是库名
DECLARE @db NVARCHAR(20)
SET @db = '' + @dbname + ''
--定义备份文件的全名
DECLARE @bakname NVARCHAR(128)
SELECT  @bakname = @db + '_' + @date
--定义备份存放路径
DECLARE @disk NVARCHAR(256)
SELECT  @disk = N'D:\BACKUP\' + @bakname + '.bak'
--定义备份描述
DECLARE @name NVARCHAR(128)
SELECT  @name = @db + '-差异 数据库 备份'
--定义错误信息
DECLARE @error NVARCHAR(128)
SELECT  @error = '验证失败。找不到数据库“' + @db + '”的备份信息。'

BACKUP DATABASE @db TO  DISK = @disk WITH DIFFERENTIAL,  NOFORMAT, NOINIT,  
NAME =@name, SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM ;
DECLARE @backupSetId AS INT
SELECT  @backupSetId = position
FROM    msdb..backupset
WHERE   database_name = @db
        AND backup_set_id = ( SELECT    MAX(backup_set_id)
                              FROM      msdb..backupset
                              WHERE     database_name = @db
                            )
IF @backupSetId IS NULL 
    BEGIN
        RAISERROR(@error, 16, 1)
    END
RESTORE VERIFYONLY FROM  DISK = @disk WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO
但是我还是建议你用维护计划
發糞塗牆 2014-08-11
  • 打赏
  • 举报
回复
我有个类似的
--定义备份时间,精确到秒
DECLARE @date NVARCHAR(64)
SELECT  @date = SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 1, 4) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 6, 2) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 9, 2) + '_'
        + CONVERT(CHAR(2), DATEPART(hh, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(mi, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(ss, GETDATE()))
--定义要备份的数据库名
DECLARE @db NVARCHAR(20)
SET @db = '' + '数据库名' + ''
--定义备份文件的全名
DECLARE @bakname NVARCHAR(128)
SELECT  @bakname = @db + '_' + @date
--定义备份存放路径
DECLARE @disk NVARCHAR(256)
SELECT  @disk = N'DataBak\' + @bakname + '.bak'
--定义备份描述
DECLARE @name NVARCHAR(128)
SELECT  @name = @db + '-完整 数据库 备份'
--定义错误信息
DECLARE @error NVARCHAR(128)
SELECT  @error = '验证失败。找不到数据库“' + @db + '”的备份信息。'

BACKUP DATABASE @db TO  DISK = @disk WITH  COPY_ONLY, NOFORMAT, NOINIT,  
NAME =@name, SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM ;
DECLARE @backupSetId AS INT
SELECT  @backupSetId = position
FROM    msdb..backupset
WHERE   database_name = @db
        AND backup_set_id = ( SELECT    MAX(backup_set_id)
                              FROM      msdb..backupset
                              WHERE     database_name = @db
                            )
IF @backupSetId IS NULL 
    BEGIN
        RAISERROR(@error, 16, 1)
    END
RESTORE VERIFYONLY FROM  DISK = @disk WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO
發糞塗牆 2014-08-11
  • 打赏
  • 举报
回复
为什么不能自动执行?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧