脚本下载下来之后,请更改备份路径,备份数据库的名称,实例名称等。
sqlserver 备份脚本下载(支持全备和增量备份,支持sqlserver 2008 之后版本备份)
脚本实现功能如下:
1,第一次运行生成数据库的全备份,完成后建立全部份的标识
2,后面再次运行判断是否存在全备份标识,如果存在都是增量备份。
<#
.SYNOPSIS
SQL Server 数据库备份脚本(完全备份 + 差异备份)
.DESCRIPTION
首次运行执行完全备份,后续每4小时执行差异备份
需要提前安装 SQLServer 模块(Import-Module SQLServer)
#>
# 配置参数
$backupPath = "D:\SQLBackup\" # 备份文件存储路径
$databases = @("itf_shybao_new", "race_bjtrt") # 需要备份的数据库列表
$sqlInstance = "localhost" # SQL Server 实例名称(本机使用localhost)
$flagFile = Join-Path $backupPath "FullBackup.flag" # 完全备份标记文件
#region 函数:执行SQL备份
function Invoke-SqlBackup {
param(
[string]$dbName,
[string]$backupType,
[string]$filePath
)
# 构建备份命令
$backupCommand = @"
BACKUP DATABASE [$dbName]
TO DISK = N'$filePath'
WITH $backupType, FORMAT,
COMPRESSION, -- 启用压缩(SQL Server 2008+ 企业版支持)
STATS = 5, -- 每完成5%进度输出日志
CHECKSUM; -- 启用校验和验证
"@
# 执行备份命令
try {
Invoke-Sqlcmd -ServerInstance $sqlInstance -Query $backupCommand -QueryTimeout 0 -ErrorAction Stop
Write-Host "成功备份数据库 [$dbName] 到 $filePath" -ForegroundColor Green
return $true
}
catch {
Write-Host "备份数据库 [$dbName] 失败:$_" -ForegroundColor Red
return $false
}
}
#endregion
#region 主程序逻辑
# 创建备份目录(如果不存在)
if (-not (Test-Path $backupPath)) {
New-Item -Path $backupPath -ItemType Directory | Out-Null
}
# 决定备份类型
$isFullBackup = -not (Test-Path $flagFile) # 通过标记文件判断是否首次运行
# 生成时间戳(格式:YYYY_MM_DD-HHmm)
$timestamp = Get-Date -Format "yyyy_MM_dd-HHmm"
# 遍历所有数据库执行备份
foreach ($db in $databases) {
# 生成备份文件名
$backupTypeName = if ($isFullBackup) { "full" } else { "increment" }
$fileName = "${db}_db_bak_${backupTypeName}_${timestamp}.bak"
$fullPath = Join-Path $backupPath $fileName
# 执行备份
$result = Invoke-SqlBackup -dbName $db `
-backupType $(if ($isFullBackup) { "INIT" } else { "DIFFERENTIAL" }) `
-filePath $fullPath
# 首次成功备份后创建标记文件
if ($isFullBackup -and $result) {
New-Item -Path $flagFile -ItemType File | Out-Null
}
}
#endregion
#region 后续操作建议
Write-Host @"
-----------------------------------------------------
备份操作已完成:
1. 手动测试脚本:直接运行此PS1文件
2. 设置定时任务:
a) 打开【任务计划程序】
b) 创建【基本任务】
c) 设置每4小时重复执行
d) 操作:启动程序选 powershell.exe
e) 参数:-File "完整脚本路径.ps1"
3. 监控备份文件增长情况,定期清理旧备份
-----------------------------------------------------
"@ -ForegroundColor Cyan
#endregion
脚本下载下来之后,请更改备份路径,备份数据库的名称,实例名称等。
sqlserver 备份脚本下载(支持全备和增量备份,支持sqlserver 2008 之后版本备份)