4

私の知る限り、データベースをソース管理下に置きたい場合は、変更ごとに変更スクリプトをチェックインし、いくつかのリビジョンからスクリプトを実行して正しい DB を取得する必要があります。

私もチェックインされるバッチ ファイルを作成しようとしています。これにより、チームの他の開発者が問題なくローカルで DB を再構築できるようになります。私は sqlcmd がこれを達成する方法だと信じています。.sql ファイルのディレクトリにあるすべてのファイルを列挙し、それぞれに対して sqlcmd を実行するようにセットアップしました。

私の質問は、これまでに誰がこれを行ったのかということです。これを達成するための最善の方法についてアドバイスはありますか? 私がこれを行う方法は最善の方法ですか、それともより良い方法がありますか?

あいまいすぎないことを願っています。

前もって感謝します、

マーティン。

4

5 に答える 5

3

テーブル、SP、トリガー、ビューをテキストファイルにエクスポートすることでバージョン管理に役立つ小さなユーティリティを開発しました:gljakalのSQLエクスポーター。GUIモードとコマンドラインモードがあります(バッチファイルで使用できます)。

SQL2005以降で動作します。

于 2008-11-11T17:40:37.397 に答える
3

NHibernate のような ORM ツールを使用している場合、ORM は (ソース管理下にある) マッピング ファイルからデータベースを再作成できるため、DB 変更スクリプトを作成する手間を省くことができます。

これは、すべてのリビジョンに適切なデータベース バージョンを設定するための非常に簡単な方法です。

また、テストを実行するたびにスキーマ全体を再作成して、一貫した状態であることを確認します。

私は最近それについてブログを書きました: http://www.tigraine.at/2008/10/30/sourcecontrol-and-databases-when-orm-comes-in-handy/

私はかつて、Sql 更新スクリプトを含むプロジェクトを持っていました。フォルダーを開き、すべてのスクリプトをソートする (1 - foo.sql、2 - bar.sql という名前を付けていた) 小さなヘルパー ツール (非常に基本的なもの) を作成しました。 )、DBに対して順番に実行しました。

開発者が新しいスクリプトを作成した場合、それを末尾に追加するだけです (34 - bla bla.sql)。

于 2008-11-11T10:38:41.837 に答える
0

注意すべきことの 1 つは、依存関係の順序でオブジェクトを作成する必要があることです。したがって、ファイルを単純に反復することはできません。

最終的に、すべてのオブジェクトを依存関係の順にリストするバッチ ファイルが作成されました。

実際には、createDBObject.bat と呼ばれる 2 つのバッチ ファイルがありました。

:: Parameters Required:
:: %1 UserID
:: %2 Password
:: %3 Server
:: %4 Database
:: %5 file with scripted object
::
echo. >> CreateDBObjectsLog.txt
echo  %5 >> CreateDBObjectsLog.txt
osql -U%1 -P%2 -S%3 -i%5 -d%4 -n >> CreateDBObjectsLog.txt
echo * %5

次に、すべての db オブジェクトのリストを含むもう一方:

:: Parameters Required:
:: %1 UserID
:: %2 Password
:: %3 Server
:: %4 Database
::
echo object  in %4 database on %3 server
echo Please Wait ...

if exist CreateDBObjectsLog.txt del CreateDBObjectsLog.txt


call createDBObject.bat %1, %2, %3, %4, ScriptedTable1
call createDBObject.bat %1, %2, %3, %4, ScriptedTable2
...
call createDBObject.bat %1, %2, %3, %4, ScriptedTableN

call createDBObject.bat %1, %2, %3, %4, ScriptedView1

call createDBObject.bat %1, %2, %3, %4, ScriptedSP1

etc

現在、これらすべてのタスクを自動化するSQL Compare Proを使用しています。

関連する質問を確認することもできます:データベース スキーマ全体をスクリプト化するための、RedGate に代わる「貧乏人の」代替手段はありますか?

于 2008-11-11T10:38:08.623 に答える
0

あなたの会社がいくつかの優れたツールに投資する意思がある場合は、SQL Compare Proを確認する価値があります。説明したタスクを自動化/簡素化するのに適しています。14日間無料で完全に機能する試用版が利用できるため、お金を投資する前にテストできます.

于 2008-11-11T11:03:04.470 に答える
0

OR マッピング フレームワークがスキーマを作成できるという点は興味深い点です。私は実際に LINQ To SQL を使用していますが、CreateDatabase() 呼び出しを使用してスキーマと DB を再作成できると思います。

LINQ To SQL を介してデータベース ソース管理にこのアプローチを採用した人は他にいますか?

于 2008-11-11T11:05:45.137 に答える