この質問はすでに SO で何度も尋ねられていますが、興味深いことに、最良の答えについてはコンセンサスがないようです。そこで、さまざまな人々が提案した主なオプションの要約を以下に示します (順不同):
<オール>sp_
を使用して master データベースに配置します SQL Server が最初に検索するためのプレフィックスdiff
差分スクリプトを適用して他のデータベースに展開私の意見では、Microsoft が明示的に述べている master データベースにオブジェクトを作成しないでください。 2 は良さそうに聞こえますが、実際には、データベースは最初から作成されたもの (YMMV) よりも頻繁に復元またはコピーされるため、モデルの使用は信頼できません。
3 と 4 はテーブルとビューには適していますが、ストアド プロシージャと関数では実行コンテキストが問題になる可能性があります。しかし、これは手順のロジックに依存し、あなたのケースでは実行可能かもしれません.
しかし、1-4 にはすべて、オブジェクトが 1 つしかない場合、そのオブジェクトのバージョンも 1 つしかないという潜在的な問題があり、さまざまなバージョンをさまざまな DB で使用できるようにしたり、テストやさまざまな顧客のために利用したりするのに役立つことがよくあります.
5 と 6 は同じテーマのバリエーションであり、個人的にはこれが最善のアプローチだと思います。展開はとにかく解決しなければならない問題だからです。そうすれば、知識、ツール、プロセスが整っていることを確認した方がよいでしょう。制御され自動化された方法で、コードをクリーンかつ迅速にデータベースにデプロイできるようになります。