5

そのため、最近私が取り組んでいるプロジェクトで、ソリューションのコードベースと関連するデータベーススキーマの同期を維持するのに苦労しています(データベース= SQL Server2008)。

データベースの変更はかなり定期的に発生し(列、制約、関係などを追加)、その結果、ソース管理から「最新情報を取得」を実行し、データベースも再構築する必要があることに気付くのは珍しいことではありません(場合によっては後者を行うのを忘れてください)。

VSTS:Database Edition(DataDude)を使用していませんが、T-SQLスクリプトからデータベースを破棄して再作成するスクリプト(バッチファイル)を備えた標準のVisualStudioデータベースプロジェクトを使用しています。このソリューションは、ORMとしてLINQtoSQLを基盤とする.NetおよびASP.netソリューションです。

誰もが最新のデータベーススキーマを最新の状態に保つための(自動化されているかどうかに関係なく)アプローチについてアイデアがありますか?

MSBuildとの継続的インテグレーションはオプションですが、コミットされた重大な変更を検出するのに役立つだけであり、上記で強調したシナリオでは実際には役立ちません。

それが役立つ場合は、TeamFoundationServerを使用しています。

4

8 に答える 8

4

作成スクリプトから前進しようとしています。

つまり、スクリプトがテストされ、ソース管理にチェックインされていない限り、データベースへの変更は許可されません。

ただし、これは、データベースチームがアプリチームと統合されていることを前提としています。これは、大規模なプロジェクトでは通常は当てはまりません...

(私はこれに「非常に困難に」答えたくなりました)

編集:あなたのプロセスが正しくない場合、ツールはあなたを助けません。

于 2009-01-15T05:58:51.187 に答える
2

解決策全体ではありませんが、データベースにリンクして正しいスキーマが使用されていることを表明するアサーションをアプリケーションコードに含める必要があります。そうすれば、少なくともそれが明らかになり、サイレントバグや人々からの不満を避けることができます。突然夢中になりました。

スキーマバージョンに関しては、利用可能な場合はデータベース固有の機能を使用できますが、個人的にはスキーマバージョンテーブルを宣言し、そこにバージョン番号を保持することを好みます。そうすれば、移植性が高く、簡単なselectステートメントで確認できます。

于 2009-01-15T06:11:33.627 に答える
1

have a look at DB Ghost - you can create a dbp using the scripter in seconds and then manage all your database code with the change manager. www.dbghost.com

This is exactly what DB Ghost was designed to handle.

于 2009-01-15T10:28:29.940 に答える
0

生成スクリプトもソース管理にチェックインして、基本的にはあなたのやり方で行います。私は指定されたデータベースマスターなので、スクリプト自体へのすべての変更は私を介して行われます。変更内容のスクリプトが送られてきます。スキーマのマスターコピーを更新し、スクリプトの生成(SSMS)を実行して新しいDBスクリプトを生成し、チェックインします。コードのコピーを最新の状態に保ちます。他の場所で行われている変更。私たちは小さなお店なので、これは私たちにとってかなりうまくいきます。私はそれがおそらくスケーリングしないことを理解しています。

于 2009-01-15T05:59:21.450 に答える
0

If you are not using Visual Studio Database Professional Edition, then you will need another tool that can break the database down into its elemental pieces so that they are managable and changeable in an easier manner.

I'd recommend seriously considering Redgate's SQL tools if you want to maintain sanity over all your database changes and updates.

于 2009-01-15T06:18:43.923 に答える
0

この質問を見てください:データベースの動的パッチ。私はそれがあなたの問題に十分似ていると思います。

于 2009-01-15T07:25:35.647 に答える
0

RedGate SQL Compareなどのツールを使用して、データベースの特定のバージョン間の変更スキーマを生成します。その後、そのファイルをソースコード管理にチェックインできます

于 2009-01-15T07:06:41.643 に答える
0

この問題に対する私の解決策は簡単です。すべてを XML として定義し、データベース、ORM、および UI の両方がこの XML から生成されていることを確認してください。例外はありません。そうすれば、コード生成ツールを使用してデータベース作成スクリプトをすばやく再生成できます。これにより、(うまくいけば) 一部のデータを保持しながらスキーマが変更されます。それには多少の努力が必要ですが、最終的な結果はそれだけの価値があります。

于 2009-02-21T19:58:12.867 に答える