Выполните командлет Backup-SqlDatabase удаленно

3469
Maxim V. Pavlov

Когда я запускаю следующую строку сценария локально на компьютере с 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 $ -ArgumentList $SQLInstanceName, $DatabaseName, $BackupDirectory, $BakId 

приводит к ошибке:

Не удалось подключиться к серверу $ serverName. + CategoryInfo: NotSpecified: (:) [Backup-SqlDatabase], ConnectionFailureException + FullyQualifiedErrorId: Microsoft.SqlServer.Management.Common.ConnectionFailureException, Microsoft.SqlServer.M anagement.PowerShell.BackupSqlDatabaseCommand

Как правильно выполнить командлет Backup-SqlDatabase удаленно?

1

1 ответ на вопрос

1
Stoinov

You can just install three modules from SQL Feature pack that provides the SQLPS functionality and use it without Invoke. Get and install in this order:

Microsoft® System CLR Types for Microsoft® SQL Server® 2012 Microsoft®
SQL Server® 2012 Shared Management Objects Microsoft® Windows
PowerShell Extensions for Microsoft® SQL Server® 2012

from here. After this you can run them localy and access remote SQL servers back to SQL 2000. Read here for some help.

Похожие вопросы