Execute o cmdlet Backup-SqlDatabase remotamente

1

Quando executo a seguinte linha de script localmente em uma máquina do SQL Server, ela é executada perfeitamente:

Backup-SqlDatabase -ServerInstance $serverName -Database $sqldbname -BackupFile "$($backupFolder)$($dbname)_db_$($addinionToName).bak"

$ serverName contém um nome abreviado da instância do SQL Server. O SQL Server é 2012, portanto, esses novos cmdlets funcionam como um encanto.

Por outro lado, quando estou tentando executar um backup de banco de dados de uma máquina do agente do TeamCity como esta (por meio do 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

resulta em um erro:

Failed to connect to server $serverName. + CategoryInfo : NotSpecified: (:) [Backup-SqlDatabase], ConnectionFailureException + FullyQualifiedErrorId : Microsoft.SqlServer.Management.Common.ConnectionFailureException,Microsoft.SqlServer.M anagement.PowerShell.BackupSqlDatabaseCommand

Qual é a maneira correta de executar o cmdlet Backup-SqlDatabase remotamente?

    
por Maxim V. Pavlov 28.10.2013 / 10:20

1 resposta

1

Você pode apenas instalar três módulos do SQL Feature Pack que fornece a funcionalidade do SQLPS e usá-lo sem o Invoke. Obtenha e instale nesta ordem:

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

de aqui . Depois disso, você pode executá-los localmente e acessar servidores SQL remotos de volta ao SQL 2000. Leia aqui para ajuda.

    
por 24.07.2014 / 12:35