You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell将跨域SQL Server数据库备份存储到本地域

方案可行性结论

可以实现,无需在OtherDomain域内存储中间备份文件,全程仅通过已开放的1433端口完成备份数据传输,直接将备份文件存储在MyDomain域内。

实现原理

利用SQL Server的流式备份能力,通过PowerShell的SqlServer模块直接从源实例拉取备份数据流,写入本地(MyDomain域内)存储路径,备份数据不会在源实例所属的OtherDomain域落地。

前置要求
  • 运行PowerShell脚本的设备需同时连通TheOtherSide实例的1433端口,且对MyDomain域内的目标备份存储路径有写入权限
  • 连接TheOtherSide的账号需具备源库BACKUP DATABASE权限,支持SQL认证或域账号认证
操作步骤
  1. 首先安装依赖的PowerShell模块,执行命令:
    Install-Module -Name SqlServer -Scope CurrentUser -Force

  2. 参考以下脚本编写自动化逻辑,可根据实际需求调整参数:

# 源实例配置
$sourceInstance = "TheOtherSide"
$sourceDb = "CoolDatabase"
# 源实例认证信息,如使用SQL认证只需替换账号格式即可
$sourceUser = "你的源实例账号"
$sourcePwd = ConvertTo-SecureString "你的源实例密码" -AsPlainText -Force
$sourceCred = New-Object System.Management.Automation.PSCredential($sourceUser, $sourcePwd)
# 本地备份路径(MyDomain域内存储位置)
$backupSavePath = "D:\SQLBackups\CoolDatabase_$(Get-Date -Format 'yyyyMMddHHmmss').bak"

# 执行流式备份,直接写入本地路径
Backup-SqlDatabase -ServerInstance $sourceInstance `
  -Credential $sourceCred `
  -Database $sourceDb `
  -BackupFile $backupSavePath `
  -CompressionOption On `
  -CopyOnly
扩展自动化(可选)

如果需要后续自动恢复到MySide实例,可在备份完成后追加恢复脚本:

# 目标实例配置
$destInstance = "MySide"
$destDb = "CoolDatabase"

Restore-SqlDatabase -ServerInstance $destInstance `
  -Database $destDb `
  -BackupFile $backupSavePath `
  -ReplaceDatabase
注意事项
  • 开启-CompressionOption On参数可启用SQL Server内置备份压缩,大幅减少传输数据量,压缩运算在源实例侧执行,不会额外占用带宽
  • 加-CopyOnly参数可避免本次备份干扰源实例现有的备份链,生产环境建议保留该参数
  • 全程仅使用1433端口通信,无需开通其他端口权限,符合现有网络规则
  • 可将脚本加入Windows任务计划,按指定周期自动执行即可实现全流程自动化

内容的提问来源于stack exchange,提问作者Henrov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:54:04