Wenn ich die folgende Skriptzeile lokal auf einem SQL Server-Computer ausführen, wird sie einwandfrei ausgeführt:
Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"
$ serverName enthält einen Kurznamen der SQL Server-Instanz. SQL Server ist 2012, daher funktionieren diese neuen Cmdlets wie ein Zauber.
Wenn ich dagegen versuche, eine DB-Sicherung von einem TeamCity-Agentencomputer wie diesem durchzuführen (durch Cmdlet "Invoke-Command"):
function BackupDB([String] $serverName, [String] $sqldbname, [String] $backupFolder, [String] $addinionToName)
{
Import-Module SQLPS -DisableNameChecking
Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"
}
Invoke-Command -computername $SQLComputerName -Credential $credentials -ScriptBlock ${function:BackupDB} -ArgumentList $SQLInstanceName, $DatabaseName, $BackupDirectory, $BakId
führt zu einem Fehler:
Verbindung zu Server $ Servername konnte nicht hergestellt werden. + CategoryInfo: NotSpecified: (:) [Backup-SqlDatabase], ConnectionFailureException + FullyQualifiedErrorId: Microsoft.SqlServer.Management.Common.ConnectionFailureException, Microsoft.SqlServer.M anagement.PowerShell.BackupSqlDatabaseCommand
Was ist der richtige Weg, um das Backup-SqlDatabase-Cmdlet remote auszuführen?