我们正在寻找一种免费的解决方案来为 SQL Server 2005 压缩我们的 SQL Server 备份。我知道 SQL Safe 免费软件版本,但我想知道其他人如何将备份文件存储在压缩文件夹中以达到预期的效果。这将允许我们使用本机 SQL 备份任务和本机 windows 压缩,从而消除对第三方产品的需求。
我过去没有使用压缩文件夹。这是一个可行的想法吗?压缩文件夹中备份的完整性是否存在任何可预见的问题?
我们正在寻找一种免费的解决方案来为 SQL Server 2005 压缩我们的 SQL Server 备份。我知道 SQL Safe 免费软件版本,但我想知道其他人如何将备份文件存储在压缩文件夹中以达到预期的效果。这将允许我们使用本机 SQL 备份任务和本机 windows 压缩,从而消除对第三方产品的需求。
我过去没有使用压缩文件夹。这是一个可行的想法吗?压缩文件夹中备份的完整性是否存在任何可预见的问题?
我是一个开源项目 (GPL v3) 的作者,它可以满足您的需求。它是一个命令行工具(用于在 Windows 中的计划任务中进行计划)并备份到 gzip、zip(特别是 zip64,因为常规 zip 文件的 4GB 限制)或 bzip2 文件。您可以使用该工具直接从压缩文件中恢复,也可以解压缩压缩文件(标准 *.bak 文件),然后使用 SQL Server GUI 进行恢复。
它称为 SQL Server 压缩备份,可在此处找到:http: //sourceforge.net/projects/mssqlcompressed/
一个示例命令是:
msbp.exe backup "db(database=model)" "zip64" "local(path=c:\model.full.bak.zip)"
来自谷歌的快速提示:backing-up-to-a-ntfs-compressed-folder。似乎数据库大小可能会产生问题。
那么免费软件解决方案怎么样,那么您可以在备份后按计划批处理运行 7zip,应该正确处理大文件。无论如何,您都应该将备份移出生产服务器:)
我使用Syncback Freeware自动将文件复制并压缩到另一个文件夹。这样可以节省大量空间。我已经这样做了好几年了,而且效果很好。
我们在 ISP 的服务器上拥有大约 100 个数据库
ISP 对磁带进行了全面的备份,但它们需要很长时间才能恢复任何东西……所以我们需要将备份“在线”保持一段合理的时间,这样我们才能首先从它们中恢复。
我们每周进行一次完整备份,每天进行一次差异备份。我们将完整备份保留一个月,差异备份保留 7 天我们每 10 分钟生成一次 TLog 备份,但仅将它们(在线)存储两天。
所以我们可以恢复到前 2 天的时间点,最后 7 天的“午夜”,以及最后 4 周的“前星期日”。
差异备份的使用减少了我们备份的总大小,并使我们能够保持更多的在线“经过时间”。
所有备份都存储在 NTFS 压缩文件夹中。我们从来没有遇到过问题,但我认为这些“共享数据库服务器”上没有任何大于 30GB 的数据库
在数据库维护期间(索引碎片整理等),我们将 TLog 备份的频率增加到每分钟。我们发现扩展数据库大小的一件事是数据库维护,因此通过这样做,我们能够减少数据库的操作大小,从而释放一些磁盘空间以进行更多备份。(通常在不同的驱动器上备份到 MDF 或 LDF,但批量操作会将旧的、陈旧的备份文件复制到包含 MDF / LDF 的驱动器,这样我们就可以让它们保持“在线”)
PS SQL 2008 具有内置的压缩备份功能,以防您打算升级
虽然我不建议直接备份到压缩文件夹,但您当然可以备份到普通文件夹,然后在服务器不太忙时使用 PowerShell 脚本单独压缩每个文件。这是我使用的一个片段。它基本上通过备份目录递归,使用NTFS压缩压缩每个文件,直到一定大小。这不是最好的解决方案;我的首选解决方案是在执行升级时使用 SQL 2008/2012 备份压缩。
$max_compressible_size = 10*1024*1024*1024 #10 gigs
$files = Get-ChildItem -recurse | where {$_.Extension -match "(trn)|(diff)|(bak)"}
foreach ($file in $files) {
$attr = (Get-ItemProperty $file.fullname).Attributes
if ($attr.ToString() -notmatch ".*Compressed.*" -and $file.Length -le $max_compressible_size) {
write-output $file.FullName
compact /C $file.FullName
}
}