0

私は既存のsql-azure dbと各bitbucket pushで自動的に配備されたazure-website設定を持っています。今度は、各リリースでdbに変更を加えたときに、特定の順序で特定のフォルダにあるいくつかの.sqlスクリプトを実行したいと思います。 Azureでこれをどうやってやるの?azureウェブサイトにデプロイするときにsql azure dbでsqlスクリプトを実行する方法

このガイドはhttps://github.com/projectkudu/kudu/wiki/Custom-Deployment-Scriptです。変更する必要があるazure-cliコマンドを実行すると、deploy.cmdファイルが生成されていることを理解しています。ちょうどそこにSQLの変更のために何を追加するのだろうか?私はすでに私が使用できるユーザー名とパスワードを含むSQL Azureデータベース用の接続文字列を持っています。ちょうど私が実際にこれらのスクリプトをSQL Azure DBに対してどのように実行できるかを知る必要があります。具体的には、次の手順:

  • を実行し、特定の順序でのSQLスクリプト(彼らは数字の例で始まる:

    1. Connectには、接続文字列に
    2. SQLスクリプトの指定したフォルダ内のルックを使用して紺碧DBをSQLへ: 015script.sql、016script.sql)
    3. 何らかのエラーが発生した場合は、何らかのエラー出力が発生します。
  • 答えて

    1

    一般的に言えば、あなたはNode.jsのスクリプトを活用し、package.jsonscriptsセクションに定義された、とdeploy.cmdファイルにカスタムNPMスクリプトを設定できるのは、デプロイメントタスクは、カスタムスクリプトを呼び出します。

    次の手順を試してください:

    1. 例えば、SQL操作を処理することができますあなたのアプリケーションでのNode.jsスクリプトを作成azure-cliコマンドによってazure site deploymentscript --node --sitePath nodejs
    2. をファイル.deploymentdeploy.cmdを作成します。 var sql = require('mssql'); var config = { user: '<user>', password: '<pwd>', server: '<database_server>.database.windows.net', // You can use 'localhost\\instance' to connect to named instance database: '<databasename>', options: { encrypt: true // Use this if you're on Windows Azure } } var connection = new sql.Connection(config, function(err) { var request = new sql.Request(connection); // or: var request = connection.request(); request.query("insert into dbo.todoitem (text) values ('test string')", function(err, recordset) { // ... error checks console.log(err); console.dir(recordset); process.exit(); }); }); connection.on('error', function(err) { // ... error handler });
    3. mssqlモジュールを追加して、カスタムスクリプトを設定ファイル、package.jsonを変更します。 { "engines": { "node": "5.9.1" }, "dependencies": { "mssql": "^3.3.0" }, "devDependencies": {}, "scripts": { "customscript": "node connection.js" }, }
    4. をすることができます、元deploy.cmdファイルで、Azureの展開タスク中npm run customscriptコマンドを呼び出すためのステップを追加するdeploy.cmdを変更しますNode.jsのモジュールをインストールするには、文を見つける: :: 3. Install npm packages IF EXIST "%DEPLOYMENT_TARGET%\package.json" ( pushd "%DEPLOYMENT_TARGET%" call :ExecuteCmd !NPM_CMD! install --production IF !ERRORLEVEL! NEQ 0 goto error popd )
      あなたは直接の下にスクリプトを追加することができます echo npm customscript call :ExecuteCmd !NPM_CMD! run customscript
    5. はその後にGit経由でのAzureへアプリケーションをデプロイ、それは意志デプロイメント・タスク中にカスタムnpmスクリプトを実行し、SQLを照会します。

    さらに心配なことは、私に知らせてください。

    0

    これで、deploy.cmdで直接SqlCmdを使用することができます。次の手順(source)は次のとおりです。

    1. mvc4 Webアプリケーションの実行のために、次のコマンドnpm install azure-cli -g
    2. を実行
    3. マシンにNPMをインストールします。azure site deploymentscript --aspWAP mvc4\Mvc4WebApplication\Mvc4WebApplication.csproj -s Mvc4\Mvc4WebApplication.sln
    4. これは.deploymentとdeploy.cmdファイルを作成します。 。これらをリポジトリのルートに追加します。

    私は本当に以下のための良い情報源を見つけることができなかった、とクーズーcmdをツール上でこれをテストするとき、私はちょうど幸運:

    の変更は、次のようなものを追加しDeploymentセクションの下のセクションをdeploy.cmd:

    set dbName=mydb 
    set sqlRunner=sqlcmd 
    set dbServer=tcp:myorg.database.windows.net,1433 
    set currentdir=%cd% 
    set username=myusername 
    set password=mypassword 
    
    for %%F IN ("%currentdir%\DBScripts\05.Changes\*.sql") do (
        @echo %%F 
        %sqlRunner% -S "%dbServer%" -U %username% -P %password% -d %dbName% -i "%%F" -b 
        if ERRORLEVEL 1 GOTO ERROR 
    ) 
    

    ここでのキーはsqlcmdです。これは私が探していたものです。 Kudu Cmd Toolの中から実際にこのすべてをテストすることができます。

    関連する問題