Когда я запускаю следующую строку сценария локально на компьютере с SQL Server, он отлично выполняется:
Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"
$ serverName содержит краткое имя экземпляра SQL Server. SQL Server 2012, так что эти новые командлеты работают как шарм.
С другой стороны, когда я пытаюсь выполнить резервное копирование БД с компьютера агента TeamCity следующим образом (с помощью командлета 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
приводит к ошибке:
Не удалось подключиться к серверу $ serverName. + CategoryInfo: NotSpecified: (:) [Backup-SqlDatabase], ConnectionFailureException + FullyQualifiedErrorId: Microsoft.SqlServer.Управление.Общие.ConnectionFailureException, Microsoft.SqlServer.Управление.PowerShell.BackupSqlDatabaseCommand
Как правильно выполнить командлет Backup-SqlDatabase удаленно?