2012-11-29 163 views
3

我想將局域網上的遠程數據庫備份到網絡共享驅動器。我使用.NET使用相同的方法進行了測試,但它確實有效,但我打算使用此Jenkins持續集成工具的PowerShell腳本。Powershell SQL Server 2008遠程數據庫備份

$dbserver = "dbserver" 
$location = "\\otherserver\Temp\" 
$user = "user" 
$pwd = "password" 

$timestamp=((get-date).toString("yyyy_MM_dd_hh_mm")) 
$file = $location + "jira_" + $timestamp + ".bak" 

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null 

$connection = New-Object "Microsoft.SqlServer.Management.Common.ServerConnection" 
$connection.ServerInstance =$dbserver 
$connection.LoginSecure = $false 
$connection.Login = $user 
$connection.Password = $pwd 

$server = New-Object "Microsoft.SqlServer.Management.Smo.Server" $connection 
$backup = New-Object "Microsoft.SqlServer.Management.Smo.backup" 
$backup.Action = 'Database' 

$device = New-Object ('Microsoft.SqlServer.Management.Smo.BackupDeviceItem') ($file, 'File') 
#$device.DeviceType = 'File' 
#$device.Name = $file 

$backup.MediaDescription = "Disk" 
$backup.Database= "jira" 
$backup.Devices.Add($device) 
$backup.SqlBackup 

我沒有得到任何異常,但也沒有得到任何信息可以幫助我排除我的代碼。使用所有可用的投擲,趕上,嘗試我只能得到。

MemberType   : Method 
OverloadDefinitions : {System.Void SqlBackup(Microsoft.SqlServer.Management.Smo.Server srv)} 
TypeNameOfValue  : System.Management.Automation.PSMethod 
Value    : System.Void SqlBackup(Microsoft.SqlServer.Management.Smo.Server srv) 
Name    : SqlBackup 
IsInstance   : True 
+0

我的主要問題是:執行此腳本的用戶/帳戶是否可以訪問該遠程位置?你可以嘗試將文件複製到該位置,看看是否有效?另外:如果您在SQL Server計算機上定位本地驅動器,此備份腳本是否工作? –

回答

2

SqlBackup是一種方法。當你調用一個方法,你需要包括打開和關閉括號:

$backup.sqlbackup($server) 

省略括號將輸出方法簽名,而不是調用方法。省略方法簽名不是一個錯誤,因此沒有錯誤。

+0

謝謝我知道如此多的linux腳本,學習ps有點複雜。 謝謝! – Maverick