11

Git Source Control Providerをセットアップして正常に実行しています。

つまり、Visual Studio プロジェクトの場合です。

問題は、そのような各プロジェクトがSQL Server データベースに密接に結びついていることです。

独自のリポジトリでデータベースをバージョン管理する方法は知ってい.gitますが、理想的には、同じ ADD、COMMIT、TAG、および BRANCH コマンドを両方のディレクトリ ツリーで同期して同時に操作する必要があるため、これは便利でも真に堅牢でもありません。

私が説明した方法で Visual Studio の Git ソース管理プロバイダーを使用して SQL Server データベースを Git する方法はありますか?

4

3 に答える 3

8

必要に応じてインストールできますがSQL Server Data Tools、必須ではありません:データベース公開ウィザードを使用して、テーブル データ を Visual Studio から直接ソリューションのフォルダーにスクリプト化し、他のプロジェクト ファイルと同じように Git を実行できます。そのフォルダに。

于 2012-10-17T17:52:49.460 に答える
6

SQL Server Data Toolsを使用してデータベース スキーマを Visual Studio プロジェクトとして保存し、 Git を使用してこのプロジェクトをバージョン管理できます。

于 2012-10-17T15:51:42.317 に答える
5

( DBmaestroの製品管理責任者として) 5 年間データベースのバージョン管理に携わっており、DBA として 20 年以上働いてきた経験から、Java を扱うようにデータベース オブジェクトを扱うことはできないという単純な事実をお伝えできます。 C# またはその他のファイルに移動し、単純な DDL スクリプトで変更を保存します。

理由はたくさんありますが、いくつか挙げてみます。

  • ファイルは開発者の PC にローカルに保存され、変更は他の開発者には影響しません。同様に、開発者は同僚による変更の影響を受けません。データベースでは(通常)そうではなく、開発者は同じデータベース環境を共有しているため、データベースにコミットされた変更は他のものに影響を与えます。
  • コードの変更の公開は、チェックイン/変更の送信などを使用して行われます (使用するソース管理ツールによって異なります)。その時点で、開発者のローカル ディレクトリのコードがソース管理リポジトリに挿入されます。最新のコードを取得したい開発者は、ソース管理ツールからリクエストする必要があります。データベースには変更が既に存在し、リポジトリにチェックインされていなくても他のデータに影響を与えます。
  • ファイルのチェックイン中に、ソース管理ツールは競合チェックを実行して、ローカル コピーを変更したときに、同じファイルが別の開発者によって変更およびチェックインされていないかどうかを確認します。繰り返しますが、データベースにはこれに対するチェックはありません。ローカル PC からプロシージャを変更し、同時にローカル PC からコードを使用して同じプロシージャを変更すると、互いの変更が上書きされます。
  • コードのビルド プロセスは、コードのラベル/最新バージョンを空のディレクトリに取得し、ビルド - コンパイルを実行することによって行われます。出力は、既存のものをコピーして置き換えるバイナリです。以前がどうだったかは気にしません。データベースでは、データを維持する必要があるため、データベースを再作成することはできません! また、デプロイでは、ビルド プロセスで生成された SQL スクリプトが実行されます。
  • SQL スクリプトを (DDL、DCL、DML (静的コンテンツ用) コマンドを使用して) 実行するときは、環境の現在の構造がスクリプトを作成するときの構造と一致すると想定します。そうでない場合、既存の新しい列を追加しようとしているために、スクリプトが失敗する可能性があります。
  • SQL スクリプトをコードとして扱い、それらを手動で生成すると、構文エラー、データベース依存関係エラー、再利用できないスクリプトが発生し、これらのスクリプトの開発、保守、テストのタスクが複雑になります。さらに、これらのスクリプトは、実行する環境とは異なる環境で実行される場合があります。
  • バージョン管理リポジトリのスクリプトが、テストされたオブジェクトの構造と一致しない場合があり、本番環境でエラーが発生します!

他にもたくさんありますが、あなたは写真を手に入れたと思います。

動作することがわかったのは次のとおりです。

  1. データベース オブジェクトに対するチェックアウト/チェックイン操作を強制する強制バージョン管理システムを使用します。これにより、バージョン管理リポジトリがチェックイン操作でオブジェクトのメタデータを読み取るため、チェックインされたコードと一致することが確認されます。手動で個別の手順としてではありません。これにより、複数の開発者が同じデータベースで並行して作業できるようになり、他のコードを誤って上書きすることを防ぐこともできます。
  2. 比較の一部としてベースラインを利用する影響分析を使用して、競合を特定し、違い (ソース管理リポジトリとデータベースの間でオブジェクトの構造を比較する場合) が開発に起因する実際の変更なのか、それとも元の違いなのかを特定します。別のブランチや緊急修正など、別のパスをスキップする必要があります。
  3. 最終的にビルドとデプロイのプロセスを自動化するために、UI または API を使用して、一度に多くのスキーマの影響分析を実行する方法を知っているソリューションを使用してください。

これについて書いた記事はこちらに掲載されていますので、よろしければご覧ください。

于 2015-04-01T07:17:51.873 に答える