9

私は本当にAzureプラットフォームの新機能ですが、これは間違った質問ですが、このトピックに関する情報を見つけることはできません。私は本当にこれで助けが必要です。私は、大学のプロジェクトのためにウェブサービスによって使用されるデータベースを配備しています。このデータベースでは、ストアドプロシージャがあり、毎日実行する必要があります。Azure Automationを使用してストアドプロシージャを実行する方法は?

Azure Automationでは、この種の操作をプログラムしたりスケジュールしたりすることができます。私はサービスを "インストール"しましたが、私は "ランブック"を作成しようとしていますが、PowerShellをそれほど使用していないので、

ご協力いただければ幸いです。前もって感謝します!

EDIT 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を起動すると、エラーも例外も送信されないため、作業が正しく行われると期待できますか?しかし、データベースに問い合わせるときに、プロシージャが変更しようとしているテーブルに変更はありません。これには何がありますか?私は何を間違えているのですか?

リファレンスコードをhttps://gallery.technet.microsoft.com/scriptcenter/How-to-use-a-SQL-Command-be77f9d2#contentから取り出してパーソナライズし、起動時にRunBookが決して入力パラメータを要求しなかったので、完全な接続文字列を使用することにしました。私は接続して完全に動作する私のC#プロジェクトと同じ接続文字列を使用しています。

私は「新しい」紺碧のインターフェイスを使用していますが、これについてはこれが重要であるかどうかわかりません。

もう一度ご連絡いただきありがとうございます。

+0

$ using:somParamを追加して、inlinescriptのパラメータにアクセスする必要があります。 https://technet.microsoft.com/en-us/library/jj574197(v=ws.11).aspxを参照してください。 –

答えて

4

私は、問題の核心を発見し、コードがうまく動作しますが、問題はAzure Automation内で間違ったタイプのRunBookを使用していたため、単純なPowerShellではなくWorkflow 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" 
} 

書き込み出力は、オプションです。

+2

このスクリプトは、上記のようにPowerShell Workflowとして実行するか、またはわずかなコード変更を加えた簡単なPowerShellスクリプトとして実行する必要があります。インラインスクリプトでコードをラップすると、それらのコマンドレットは通常のPowerShellとして実行されます。PowerShellスクリプトランブックを使用している場合は、InlineScriptとWorkflowを削除すれば動作します。通常のPowerShellとして実行するのが実際には望ましい方法です。なぜなら、スクリプトをコンパイルする必要がないためにスクリプトがより速く開始するからです。 –

+0

ありがとうございました。私はあなたが言うように、私はそれを使用しようとする、私は本当にPowerShellのノブです。 –

+0

@ElizabethCooperあなたの行 'PowerShellスクリプトランブックを使用している場合は、インラインスクリプトとワークフローを削除してください。公式のドキュメントのWebサイトでそれを見つけることができませんでした。または、読んでいる間にそれを逃した。私はワークフローとインラインスクリプトを持っていましたが、書き込み可能な "hello world"を稼働させることができませんでした。ワークフローやインラインスクリプトなしでローカルで作業しました。これは理由を説明します。ありがとうございました!私はあなたのコメントをupvotedしています。 –

0

次の記事とその後のサンプルコードは、AzureのオートメーションからAzureのSQLデータベースに対して実行するPowerShellのコードを得るための良い出発点でなければなりません:https://azure.microsoft.com/en-us/blog/azure-automation-your-sql-agent-in-the-cloud/

+0

あなたの迅速な対応に心から感謝します。実際、私はすでにその記事を見ました。私はそのコードを理解しようとしていますが、私が必要としているもののためにそれを使用するために少し修正しましたが、うまくいきませんでした。 –

関連する問題