繁体   English   中英

SQL Server 2008 - 如何压缩备份文件并移动到远程服务器

[英]SQL Server 2008 - how to zip backup files and move to remote server

我有非企业版的SQL Server 2008.我每晚进行备份,手动压缩文件然后手动复制到远程服务器。

我需要使用批处理文件自动执行此操作。 将文件从服务器复制到服务器很简单,但如何首先自动完成备份的压缩?

我需要的全部流程是:

  1. 每晚运行备份
  2. 压缩备份以减小大小(使用唯一的zip文件名)
  3. 将zip文件移动到远程服务器,该服务器在数据库服务器上设置为网络驱动器

我承认压缩部分让我失望了。 任何建议都会受到欢迎。

提前致谢。

您可以使用SQLBackupAndFTP软件备份数据库。 它是一个简单的UI工具,能够执行和安排备份作业(完整备份,差异备份和日志备份)。 它只是使用嵌入式归档程序或7-zip压缩备份,并发送到本地文件夹或NAS驱动器或FTP或云(Dropbox,Google Drive,Amazon S3)。 还有支持论坛

您可以(并且应该!)最明确地调查SQL Server 维护计划

这些允许您自动执行类似的操作

  • 检查数据库一致性
  • 根据需要重建索引
  • 做数据库和日志备份(绝对使用SQL Server 2008备份压缩!!)

我不确定他们是否内置支持压缩和复制到远程服务器,但你绝对可以使用维护计划自动化备份部分,其余部分使用某种命令文件。

如果您只是坚持如何从批处理脚本压缩:

  1. 安装7-Zip
  2. 从命令行运行:
    “C:\\ Program Files \\ 7-Zip \\ 7z.exe”a -t7z MyBackups.7z [Files to Zip]

要获得唯一的文件名,我通常会嵌入日期/时间:yyyymmddhhMMss-backup.7z

您没有指定您正在使用的zip实用程序。 有很多,但我倾向于使用Winzip,因为这是工作中使用的主要zip工具。 Winzip有一个命令行界面( http://www.winzip.com/prodpagecl.htm ),它是winzip的免费插件,可以从命令行调用。

另一种方法是通过命令行使用cygwin和tar.gz。

您可以从命令行压缩填充内容,例如使用RAR 只需将ZIP命令添加到复制的任何位置即可。 如果是在T-SQL中,则可以使用xp_cmdshell执行ZIP命令。

对于豪华选项,请查看红门备份 ,它使这个过程相当轻松。

自从你有2008年以来,你已经安装了Powershell。 我建议查看成功备份后执行的psh脚本,以压缩和复制电线。 这很可能是备份后的第二个工作步骤。

您也可以去老派并编写批处理文件来进行压缩和复制。 然后在备份作业/步骤之后再次将其作为cmdshell作业步骤调用。

如果您是程序员,则可以创建一个通过SMO获取数据库备份的应用程序,并通过可用库将此文件压缩为.gz文件。

试试这个链接:[http://www.sqlhub.com/2009/05/copy-files-with-sql-server-from-one.html][1]

简而言之:

1 - 您必须启用“Ole Automation Procedures”

2 - 修改并运行此脚本以测试:

DECLARE @FsObjId        INTEGER
DECLARE @Source         VARCHAR(4096)
DECLARE @Destination    VARCHAR(4096)
SET @Source = 'C:\ritesh'
SET @Destination= 'D:\ritesh'
--creare OLE Automation instance
EXEC sp_OACreate 'Scripting.FileSystemObject', @FsObjId OUTPUT
--call method of OLE Automation
EXEC sp_OAMethod @FsObjId, 'CopyFolder', NULL, @Source, @Destination
--once you finish copy, destroy object
EXEC sp_OADestroy @FsObjId

3 - 制定维护计划:

3.1 - 添加“备份数据库任务”并确保选择“设置备份压缩”=压缩备份。 (这将以压缩格式创建备份)

3.2 - 使用上面的脚本添加“执行T-SQL语句任务”,该脚本将移动在3.1任务之后执行的文件:)。

试试SQL Backup Master ,它可以压缩备份并将它们移动到网络(或本地)文件夹。 还可以将压缩的备份文件移动到FTP,Dropbox,Amazon S3或Google Drive。 基础版是免费的。

备份后压缩文件需要很长时间。 使用SQL Server虚拟设备接口的备份程序可以解决您的任务并减少整个处理时间。 尝试EMS SQL备份 ,它还允许将压缩备份发送到网络位置,FTP或云。

您可以使用备份助手 这将是一个解决方案。

您需要为此程序设置计划。 (像每小时一样)。 然后,您需要在Appsettings.json中配置备份文件路径和ftp凭据

{   "AppSettings": {
    "BackupPaths": [
      {
        "LocalPath": "C:\\Users\\Sinan\\Desktop\\FtpBackup\\TestDb",
        "RemotePath": "TestDb"
      },
      {
        "LocalPath": "C:\\Users\\Sinan\\Desktop\\FtpBackup\\TestHangFireDb",
        "RemotePath": "TestHangFireDb"
      },
      {
        "LocalPath": "C:\\Users\\Sinan\\Desktop\\FtpBackup\\TestLogDb",
        "RemotePath": "TestLogDb"
      }
    ],
    "BackupFileExtensions": [ ".bak" ],
    "DeleteFilesAfterSend": true,
    "ZipFilesBeforeSend": true,
    "DeleteZipFilesAfterSend": false,
    "WriteLog": true,
    "Providers": {
      "FtpServer": {
        "Enabled": true,
        "Host": "ftphost",
        "Port": "21",
        "Username": "ftpusername",
        "Password": "ftppassword"
      }
    }   } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM