2017-03-15 7 views
0

長い時間の読者、初めての質問者!DACPACの非SQLポストデプロイメントスクリプト

私は、データベースコード用のDACPACを新しい "開発者向け"の世界に展開しているので、これまでの問題を頭に入れていました。これはMSIの作成内で行うことができるはずですが、私は面白いことに、その機能を追加していないので、私はDACPACに残しています。

SQL以外のpost/pre配置スクリプトを実行する方法を知っている人はいませんか?理想的にはPowerShellですが、最初はフォルダ構造を作成していくつかのファイルを移動するだけです。

セキュリティ上の理由から、xp_cmdshellは問題になりません。

私は、配備後に自動的にpowershellを実行して自己を削除するSQLエージェントジョブを作成することを考えましたが、ロビー活動のルートを辿るのはむずかしいようです。

アドバイスをいただければ幸いです。

EDIT:SQLCMDモードをサポート

:!! [コマンド]

例えば

:!!ます。mkdir C:\テスト

残念ながら、Visual Studioは、そのバック製図板にSQLCMDのそのレベルをサポートしていません。

答えて

0

私はあなたがdacpacを持っているのではなく、私たちが通常行っていること以外にdacpacを配備してxを行うpowershellスクリプトを持っているのではなく、

比較は非常にプロセスがあることPowerShellスクリプトを持つことで発生する前に一般的に展開プロセスでは、我々はいくつかのSQLを実行する前の事前展開スクリプトを含める必要があります:

  • 前の事前デプロイスクリプトをチェックし、それ
  • あなたは、あなたのdacpacを展開スクリプトの中で何かをするだろうあなたのケースではDacServices .NETライブラリ

をsqlpackageを呼び出すか、使用するかdacpacをデプロイし実行します。

いずれかの方法あなたは常にあなたが理にかなって

・ホープ(パスワードや環境、特定の物事は、彼らがパラメータなどだろう場合)、使用するパラメータをコントロールソースしたいとスクリプトがデプロイをしたいと思います、あなたが言及する一つのことは、それがワンクリックすることと行わなければならないということである - これが展開するdacpacをクリックするDBAまたは誰かを意味している場合、これはDevOpsチームではありません:)

エド

+0

ちょっと返答に感謝を編、およびはい、完全に同意する、私はPowerShellの男だから理想的な方法は、特別なスクリプトを追加してPSを展開することです。残念ながら私は非常に大規模な組織で働いています。コンサルタントが過払いのコンサルタントがいくつかのデベロッパーの話題を投げかけており、彼らはそれを許さないルートを下っています(彼らはMSIでそれらを包んでいます)。私は2週間前に私の告知を渡しました。そのようなもののために私はイライラしています。私はちょうど何よりもポイントを証明するための解決策を考え出しています:)私は今、それを投稿します。 – Ollie

+0

私の修正プログラムはVisual Studioでは動作しません。SQLCMDモードのドキュメントが見つかりました。コマンドを実行するには:!! mkdir C:\ Testただし、Visual StudioはすべてのSQLCMD機能をサポートしていません。将来も! – Ollie

+0

msi'sの場合、完了後に実行するアクションを追加できませんか? MSIにはMoveFileActionがあります。あなたがコードを書くことができれば、実際の醜い/ハッキーを得ることができます。ビルドエグゼキュータ、.net dllは、デプロイスクリプトが実行されたときに呼び出されるsqlpackageに関連した特定の場所に配置する必要があります。デプロイの実行前、実行中、実行後に実行できます。正直言って、数週間であなたが離れると、私はそれぞれのアプローチと利点を文書化して、次の人が議論/泣かせるために残しておきます:)とにかく彼らはそれを変えるように聞こえます –

関連する問題