Führen Sie das Backup-SqlDatabase-Cmdlet remote aus

3508
Maxim V. Pavlov

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 $ -ArgumentList $SQLInstanceName, $DatabaseName, $BackupDirectory, $BakId 

führt zu einem Fehler:

Verbindung zum 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?

1

1 Antwort auf die Frage

1
Stoinov

Sie können einfach drei Module aus dem SQL Feature Pack installieren, das die SQLPS-Funktionalität bereitstellt, und sie ohne Invoke verwenden. Holen Sie sich und installieren Sie in dieser Reihenfolge:

CLR-Typen für Microsoft® System für Microsoft® SQL Server® 2012
Gemeinsame Microsoft® SQL Server® 2012-Verwaltungsobjekte Microsoft® Windows
PowerShell-Erweiterungen für Microsoft® SQL Server® 2012

von hier aus . Danach können Sie sie lokal ausführen und auf entfernte SQL-Server zurück zu SQL 2000 zugreifen. Lesen Sie hier die Hilfe.