Как запустить хранимую процедуру с помощью Azure Automation?

Im действительно Новичок в платформе Azure, и, возможно, это глупый вопрос, но мне не удалось найти информацию об этой теме. Мне действительно нужна помощь. Я развертываю базу данных, используемую веб-службой для университетского проекта. В этой базе данных у меня есть хранимая процедура и нужно выполнять ежедневно.

обнаружил, что с помощью Azure Automation вы можете программировать или планировать такие действия. Я "установил" службу, и я пытаюсь создать "runbook", но не знаю как или что кодировать здесь, потому что я никогда не использовал PowerShell так много.

любая помощь будет оценили. Заранее спасибо!

изменить 1:

поэтому я пытаюсь использовать этот код для создания магии:

 workflow WORKFLOW_NAME
{ 
    param( 

    ) 


    inlinescript { 
        # Define the connection to the SQL Database 
        $Conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=SERVER_NAME.database.windows.net;Initial Catalog=DATABASE_NAME;Integrated Security=False;User ID=USERNAME;Password=PASSWORD;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False") 

        # Open the SQL connection 
        $Conn.Open() 

        # Define the SQL command to run. 
        $Cmd=new-object system.Data.SqlClient.SqlCommand("exec PROCEDURE_NAME", $Conn) 
        $Cmd.CommandTimeout=120 

        # Execute the SQL command 
        $Da=New-Object system.Data.SqlClient.SqlDataAdapter($Cmd) 

        # Close the SQL connection 
        $Conn.Close() 
    } 
}

дело в том, что когда я сохраняю RunBook и публикую его, он говорит, что ошибок нет. Когда я запускаю RunBook, он запускается и завершает отправку без ошибок и исключений, поэтому вы можете ожидать, что он работает правильно? но при консультации база данных в таблицах, для изменения которых предназначена процедура, изменений нет. В чем может быть ошибка? что я делаю не так?

Я взял ссылочный код из https://gallery.technet.microsoft.com/scriptcenter/How-to-use-a-SQL-Command-be77f9d2#content , персонализировал его и избавился от "param", потому что RunBook при запуске никогда не запрашивал никаких параметров входа, поэтому я решил пойти с полной строкой соединения. Я использую то же самое строку подключения в мой проект C#, который подключается и работает отлично.

Я использую" новый " интерфейс azure, не знаю, Может ли это иметь какое-либо значение в этом отношении.

еще раз спасибо за любую помощь вы могли бы предоставить.

2 ответов


Я нашел ядро проблемы, код работает отлично, проблема заключалась в том, что я использовал неправильный тип RunBook внутри Azure Automation, поэтому убедитесь, что вы используете PowerShell рабочего процесса вместо простого PowerShell.

код, который я разместил в вопросе, работает, но я нашел лучший способ понять, что код сделал, используя приведенный здесь пример:https://azure.microsoft.com/en-us/blog/azure-automation-your-sql-agent-in-the-cloud/ (Спасибо @Joseph Idziorek)

вот рабочий код для тех, кто столкнулся с такой же проблемой как и я:

workflow NAME-OF-YOUR-WORKFLOW
{
    Write-Output "JOB START BEFORE INLINESCRIPT"

    inlinescript
    {
        Write-Output "JOB START"
        # Create connection to Master DB
        $MasterDatabaseConnection = New-Object System.Data.SqlClient.SqlConnection
        $MasterDatabaseConnection.ConnectionString = "Data Source=YOUR-DATABASE-SERVER-NAME.database.windows.net;Initial Catalog=YOUR-DATABASE-NAME;Integrated Security=False;User ID=YOUR-DATABASE-USERNAME;Password=YOUR-DATABASE-PASSWORD;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False"
        $MasterDatabaseConnection.Open()

        Write-Output "CONNECTION OPEN"

        # Create command
        $MasterDatabaseCommand = New-Object System.Data.SqlClient.SqlCommand
        $MasterDatabaseCommand.Connection = $MasterDatabaseConnection
        $MasterDatabaseCommand.CommandText = "YOUR-PROCEDURE-NAME"

        Write-Output "DATABASE COMMAND TEXT ASSIGNED"

        # Execute the query
        $MasterDatabaseCommand.ExecuteNonQuery()

        Write-Output "EXECUTING QUERY"

        # Close connection to Master DB
        $MasterDatabaseConnection.Close() 

        Write-Output "CONNECTION CLOSED"
    }    
    Write-Output "WORK END - AFTER INLINESCRIPT"
}

выходы записи необязательны, если вы хотите проверить, какая часть кода работает и все ли работает после каждого запуска.


следующая статья и последующий пример кода должны быть хорошей отправной точкой для выполнения кода PowerShell в базе данных SQL Azure из Azure Automation: https://azure.microsoft.com/en-us/blog/azure-automation-your-sql-agent-in-the-cloud/