.net SQL Server SMO从远程服务器本地备份

.net SQL Server SMO从远程服务器本地备份,.net,sql-server,backup,smo,.net,Sql Server,Backup,Smo,我的问题是直截了当的,如何通过连接到远程服务器来编程SQLSMO以进行本地备份。我想将bak文件保存到连接到远程服务器的本地计算机上。我还希望只有特定权限的用户能够在本地保存备份 您不能使用-period。SQL Server的备份只能保存到本地磁盘(SQL Server本身的本地磁盘) 您不能使用任何技巧或工具将远程SQL Server备份到本地硬盘。就是做不到 编辑:重新阅读您的问题和marc_的答案只有在远程服务器上您谈论的是网络某处的服务器时,我的答案才会起作用。如果你说的是另一个域上托

我的问题是直截了当的,如何通过连接到远程服务器来编程SQLSMO以进行本地备份。我想将bak文件保存到连接到远程服务器的本地计算机上。我还希望只有特定权限的用户能够在本地保存备份

您不能使用-period。SQL Server的备份只能保存到本地磁盘(SQL Server本身的本地磁盘)

您不能使用任何技巧或工具将远程SQL Server备份到本地硬盘。就是做不到

编辑:重新阅读您的问题和marc_的答案只有在远程服务器上您谈论的是网络某处的服务器时,我的答案才会起作用。如果你说的是另一个域上托管的SQL Server,marc_是对的,我的回答没有用。无论如何,我会把它放在这里,以防你说的是你域中的服务器。 编辑结束

在本地C:\tmp目录上设置共享后,运行此位Powershell进行备份


[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')  | out-null
# may need this instead [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SmoExtended') | out-null

$datePart = Get-Date -Format "yyyyMMdd_hhmm" 
$targetDir = '\\LocalMachineName\tmp\'  # change to fit your specs
$dbname = "DatabaseNameToBackUp"

$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') 'remoteSqlServer'
$bckfile = $targetDir + $dbname + "_" + $datePart + ".bak"
$dbbk = new-object ('Microsoft.SqlServer.Management.Smo.Backup')
$bdi = new-object ('Microsoft.SqlServer.Management.Smo.BackupDeviceItem') ($bckfile, 'File')
$dbbk.Action = 'Database'
$dbbk.BackupSetDescription = "Full backup of " + $dbname
$dbbk.BackupSetName = $dbname + " Backup"
$dbbk.Database = $dbname
$dbbk.MediaDescription = "Disk"
$dbbk.Devices.Add($bdi)
$dbbk.SqlBackup($s)
$dbbk.Devices.Remove($bdi) |out-null
$bckfile = $null
我知道你没有提到Powershell,但自从我看到.net标签后,我觉得它可能还是有帮助的。重写到您选择的.net风格不应该花费太多精力