2

15 ~ 20 個のデータベースを持つ SQL Server インスタンスがあり、RedGate を使用して TFS でチェックインします。これらのスクリプトの助けを借りて、インスタンスをレプリケートできるようにするためのスクリプトに取り組んでいます (たとえば、開発者が必要に応じてローカル インスタンスを実行できるようにするため)。私が心配しているのは、これらのスクリプト間の依存関係です。

TFS では、RedGate は.sql各データベースのファイルを含むこれらのフォルダーを作成しました。

Functions
Security
Stored Procedures
Tables
Triggers
Types
Views

これらのフォルダーをループしてSQLを実行するだけで、Powershellで簡単なテストを行いましたが、常に機能するとは限りません。私が従うことができる厳密な順序はありますか?または、これを行う簡単な方法はありますか?明確にするために、完全に空の SQL Server インスタンスから開始し、TFS の内容に従って完全に構成されたインスタンスで終了できるようにしたいと考えています (データはありませんが、それで問題ありません)。Powershell を使用することは必須ではないため、他の方法で行う方が簡単であれば、それが望ましいです。

4

4 に答える 4

4

すでに RedGate を使用している場合は、ソース管理からデータベースに変更を移動する方法に関する記事がたくさんあります。以下は、sqcompare コマンドラインを使用して TFS からデータベース コードを移動する方法を説明するものです。

http://www.codeproject.com/Articles/168595/Continuous-Integration-for-Database-Development

空のデータベースと比較すると、探しているスクリプトが作成されます。

于 2012-05-12T13:47:14.603 に答える
1

スクリプト フォルダーからデータベースを展開する唯一の信頼できる方法は、Red Gate SQL Compare を使用することです。PowerShell を使用して .sql ファイルを実行すると、オブジェクトが正しい順序で作成されない場合があります。意味のある順序 (関数、テーブル、ビューなど) で実行しても、依存関係の問題が残る場合があります。

SQL Compare はすべてのスクリプトを読み取り、それらを使用してメモリ内に「仮想」データベースを構築します。次に、その依存関係マトリックスを計算します。これにより、展開スクリプトが作成されると、正しい順序で処理が行われます。これにより、SQL Server が依存関係に関連するエラーをスローするのを防ぐことができます。

于 2012-05-14T08:41:33.433 に答える
0

SQL Compare コマンド ラインを使用して、一連の .sql ファイルからデータベースを構築する方法についてブログに書きました。

http://geekswithblogs.net/SQLDev/archive/2012/04/16/how-to-build-a-database-from-source-control.aspx

この投稿は、継続的インテグレーションを設定するという観点からのものですが、原則は同じです。

于 2012-05-14T15:26:57.673 に答える
0

データベース オプションを指定して Visual Studio を使用している場合は、TFS のデータベース プロジェクトの内容をローカル インスタンスと比較できるスキーマ比較が含まれています。これらのオブジェクトをローカル インスタンスに作成するためのスクリプトが作成されます。完全なインスタンスに対してこれを試したことはありません。

せいぜいローカル インスタンスにデータベースを作成し、Visual Studio にテーブルやその他のオブジェクトが存在しないことを確認させる必要があるかもしれません。

また、各データベースの最後のバックアップを取り、開発者にそれらをローカル インスタンスに復元させることもできます。ただし、これは、セキュリティ ポリシーとデータベース内のデータの種類に応じて、環境ごとに異なる場合があります。

私は PowerShell を使用してスクリプトを作成する傾向があります。スクリプト化されたものをより細かく制御できるので、ローカル インスタンスでスクリプトを再実行するときに、必要な順序でスクリプトを実行できます。もう少し時間がかかる場合がありますが、より適切に機能するスクリプトが得られます。 PSは私の好みです。SQL コミュニティには、これに役立ついくつかの優れたスクリプトが既に記述されています。Jen McCownは、夫がこれを行うために書いたすべての投稿をブログに投稿しまし

于 2012-05-12T13:16:50.713 に答える