簡體   English   中英

如何使用Azure自動化運行存儲過程?

[英]How to run stored procedure using Azure Automation?

我真的是Azure平台的新手,也許這是一個愚蠢的問題,但是我還沒有找到有關此主題的信息。 我真的需要幫助。 我正在為大學項目部署Web服務使用的數據庫。 在此數據庫中,我有一個存儲過程,需要每天運行。

發現使用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界面,不知道在這方面是否有任何重要性。

再次感謝您提供的任何幫助。

我找到了問題的核心,代碼工作正常,問題是我在Azure自動化中使用了錯誤類型的RunBook,因此,請確保您運行的是Workflow PowerShell,而不是簡單的PowerShell。

我在問題中發布的代碼有效,但是我發現了一種更好的方法,可以通過使用此處提供的示例來了解代碼的含義: https : //azure.microsoft.com/zh-cn/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"
}

如果要檢查代碼的哪個部分正常工作,以及每次運行后所有工作是否正常,則寫入輸出是可選的。

以下文章和后續示例代碼應該是從Azure自動化針對Azure SQL數據庫執行PowerShell代碼的良好起點: https : //azure.microsoft.com/zh-cn/blog/azure-automation-your-sql-雲端代理/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM