Ошибка автоматизации Azure

У меня есть следующий сценарий PowerShell в автоматизации Azure. Все, что он делает, это запускает хранимую процедуру AddWeeks,

workflow GenerateWeeks
{
    $serverInstance="[my_db_server]" 
    $userName="[my_username]"
    $password="[my_password]"

    [void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.ConnectionInfo') |out-null
    $ServerConnection =new-object Microsoft.SqlServer.Management.Common.ServerConnection $serverInstance,$userName, $password
    $ServerConnection.ExecuteNonQuery("declare @date date set @date=getdate()   exec [xxxx].dbo.AddWeeks 300,@date")    

}

Но когда я выполняю тестовый прогон, я получаю следующую ошибку:

Runbook definition is invalid. Could not find type Microsoft.SqlServer.Management.Common.ServerConnection. Load the type(s) and try again. 

в чем проблема?

редактировать

С помощью jisaak у меня есть окончательная рабочая версия:

workflow GenerateWeeks
{
    InlineScript 
    {
        $con = New-Object System.Data.SqlClient.SqlConnection
        $con.ConnectionString = "Server = xxx; Database=xxx; User ID = xxx; Password = xxx;"
        $con.Open();
        $sql = "declare @date date set @date=getdate()   exec [xxx].dbo.AddWeeks 300,@date"
        $cmd = New-Object System.Data.SqlClient.SqlCommand($sql,$con)
        $cmd.CommandTimeout=300
        $cmd.ExecuteNonQuery()  
    }
}

Я устанавливаю CommandTimeout, так как при отладке он выдает исключение, говорящее:

A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)

1 ответ

Ошибка указывает на это, Microsoft.SqlServer.Management.Common.ServerConnection не доступен. Вместо этого используйте System.Data.SqlClient.SqlConnection:

$con = New-Object System.Data.SqlClient.SqlConnection
$con.ConnectionString = "Server = $serverInstance; User ID = $userName; Password = $password;"
$con.Open();
$cmd = $con.CreateCommand("declare @date date set @date=getdate()   exec [xxxx].dbo.AddWeeks 300,@date")
$cmd.ExecuteNonQuery()

Я не уверен, но вам, возможно, придется обернуть сценарий в рукопись.

Другие вопросы по тегам