0

SSDT2012 を使用してデータベース プロジェクトを展開しています。入力したい静的データがありますが、それは .csv ファイルにあります。プロジェクトに追加しましたが、サーバーの一時フォルダーなどにコピーする方法がわかりません。追加してみました

助けてくれてありがとう!

編集: Deployment Contributorsを見てきましたが、まだ解決策ではありません。実際に全員に Contributor を自分のマシンにコピーしてもらい、それを維持してバグを修正する必要があります。これは望ましいアプローチではありません。

4

1 に答える 1

2

静的データを処理するための推奨されるアプローチは、デプロイ前またはデプロイ後のスクリプトでマージ ステートメントを使用することです。

http://blogs.msdn.com/b/ssdt/archive/2012/02/02/included-data-in-an-sql-server-database-project.aspx

2000 行はかなり多いですが、SQL で簡単に処理できます。

2000 行の csv を手動でマージ ステートメントに入れるのは明らかに面倒なので、Sql インポート ウィザードを使用してテーブルに取り込み (基本的にはどこかにデプロイするだけ)、sp_generate_merge をデプロイしてマージ ステートメントを作成できます。その後、デプロイ後のスクリプトに次のように入力できます。

https://github.com/readyroll/generate-sql-merge

マージ ステートメントを使用する場合は、スクリプトを自動的に生成するかどうかに関係なく、Alex Whittles のこのブログを使用して、最初は非常に混乱する可能性があるため、それらがどのように機能するかを理解することを強くお勧めします。

http://www.purplefrogsystems.com/blog/2011/12/introduction-to-t-sql-merge-basics/

最後に、静的データからアイテムを削除するときは注意が必要です。データに外部キーを持つ他のテーブルがあり、子テーブルがマージステートメントに依存するアイテムを削除すると失敗するため、先に進むことを確認する必要がありますマージを実行する前に、デプロイ前/デプロイ後のスクリプトで発生する可能性のある問題に対処してください。これらは再実行可能でなければなりません。

エド

于 2015-03-31T06:04:33.483 に答える