0

私の会社では、CI と CD を実行し、SqlPackage を使用して dacpacs をデプロイする作業を行っています。

各 Dacpac を並行して実行しているため、時間がかかります。ただし、依存関係に関する問題が発生する場合があります。たとえば、DB A はデプロイされていますが、同時にデプロイされている DB B に依存しています (ストアド プロシージャの依存関係など)。

これらの依存関係を無視し、展開時に失敗しないように、何らかのフラグまたは何かを指定して sqlpackage を実行する方法はありますか?

ありがとう

4

3 に答える 3

1

このタイプの同時展開は、推奨されるアプローチではありません。しかし、外部依存関係を必要とするステップを見つけて、ステップの TSQL を書き換えて、成功するか実行時間または再試行回数の設定制限を超えるまで TSQL を再試行する配置コントリビューターを作成できると思います。これにより、循環依存関係の場合にデッドロックが発生する可能性があることに注意してください。

于 2015-09-08T17:31:11.110 に答える
0

dacpac をデータベース参照として追加すると、エラーを無視するようにマークできます。それはあなたの場合の解決策かもしれません。

于 2015-09-10T06:14:20.677 に答える
0

「無効なオブジェクト名 'XX.XX.XX'」または同様のものを取得していると思いますか?

これはSQLの要件です。作成/変更SQLを実行すると、それがコンパイルされ、それが正しいことが検証されるため、依存関係がまだ展開されていない場合、SQLは更新を展開できません。

残念ながら、正しい順序でそれらを展開する必要があります。

実際の展開時間を制限するには (ただし、全体の時間を止めることはありません)、スクリプトを生成し、依存関係のある順序で実行することができます (双方向の依存関係がない限り、それがどのように機能するかはわかりません! ) オフラインで効果的に生成し、展開に関してはスクリプトを実行します (したがって、スクリプト生成を CI ステップに移動すると、CD ステップは、スクリプトを比較してから実行するのではなく、スクリプトを実行するだけになります)

エド

于 2015-09-08T09:35:22.127 に答える