さまざまなサーバー(SQL2016)に動的に公開するデータベースを備えたBIDS SQL Server Database Project
があります。最初は空白で始まり、すべてがパラメータ化されています。すべてがAzure DevOpsにあり、場所にデプロイされます。
(ほとんど静的な)構成にインクルード/パックしたいdataいくつかのテーブル。最初はスクリプトウィザードを使用してテーブルをスクリプト化し、そのスクリプトテキストを展開後のファイル(InitConfigs.PostDeployment1.sql
)に挿入しました。
スクリプト化すると、1つの構成テーブルに遭遇しましたが、これはほぼ600 MBのスクリプトです。サイズは問題ではありません、それをプロジェクトに埋め込むための適切な/より良い方法がなければならないようです。
私が試したいくつかのこと:
*.sql
ファイルを生成します。 -プロジェクトに追加して、SQLCMD :r
で参照できます。奇妙に思えます。すべてをうまくラップして簡単にインポートできる、ある種のデータパッケージdacpac/bacpacスタイルファイルはありますか?おそらく圧縮もされているのでしょうか?
あなたの直感はここにあります-ソース管理のSSDTプロジェクトの一部として600 MBのSQLスクリプトを持つことは一般的ではありません。
特に、gitなどの分散バージョン管理システムの世界では、さまざまなマシン上でそのファイルの潜在的に多数のコピーについて話し、その履歴を詳細に追跡していることになります。
ただし、気づいたように、デプロイ後のスクリプト以外に静的データを処理する「組み込み」の方法はありません。
SQL SSDTデータベースプロジェクト:ソース管理参照データ
1つの解決策は、使い捨てのSSDTプロジェクトを作成することです。このプロジェクトに含まれるのは、構成データスクリプトだけです。次に、そこからdacpacファイル(実際には単なる圧縮フォルダー)を作成し、メインプロジェクトでそのdacpacを「参照」できます。
このアプローチの利点は、圧縮されたデプロイスクリプトを取得できることですが、それは既存のデプロイパイプラインに簡単に適合する形式です(単に投げるのではなく)スクリプトファイルを.Zipアーカイブに)。
これは次のようになります。
私は、AdventureWorksサンプルデータベーススキーマを含むSSDTプロジェクトを持っています。結果のdacpacは80 KBです。
2つ目のプロジェクトを作成します。このプロジェクトに含まれるのは、静的構成データスクリプトを参照する配置後スクリプトです。
これにより、34 KBのdacpacファイルが生成されます。
データに大きく依存するその圧縮率に基づいて、600 MBは2 MBまで小さくなる可能性があります(このようなスクリプトには多くの繰り返しがあり、適切な圧縮に役立ちます)。
次に、メインSSDTプロジェクトで「データベース参照」としてdacpacを追加できます。
この時点で、「InitScripts」プロジェクトを破棄できます。または、dacpacを更新して再生成する必要が生じた場合に備えて、それを別のスタンドアロンリポジトリに保存することもできます。
最後に、ビルド/デプロイプロセスでは、両方のdacpacファイルをデプロイする必要があることに注意してください-「メイン」ファイルと「InitScripts」ファイルの両方を、初期セットアップ時にのみ(または毎回デプロイして、initスクリプトを用意することができます)アクションを実行する前に既存のデータを確認してください)。