5

データベース スクリプトを管理し、データベースの新しい開発を行うためのオプションは次のとおりです。

たとえば、データベースは多くのアプリケーションで使用されており、データベースを扱う多くの開発者がいます。最後の変更でデータベースを最新の状態に維持するための最良のオプションは何か、本番環境への展開の変更のプロセスはどうあるべきかなどです。

2 つのオプションが表示されます。

  1. Microsoft Visual Studio にはデータベース プロジェクトがあるため、すべてのデータベース スクリプトをプロジェクトに追加する必要があり、Visual Studio からデータベースを再構築できます。
  2. バックアップからデータベースを復元し、新しいスクリプトのみをデータベースに適用します

他にどのようなオプションがありますか? データベース開発を管理するにはどうすればよいですか?ベスト プラクティスは何ですか? 上に書いたオプションの長所と短所は何ですか?新しい SQL スクリプトを維持するには?

ソース管理システムを使用する必要があることは理解していますが、DB スクリプトでは、アプリケーションほど簡単ではありません。

私はそれが普遍的な解決策ではないと信じていますが、少なくとも DB 開発者があなたの会社でどのように実装されているかについての意見には興味があります.

4

3 に答える 3

3

現在、SVN を使用しており、すべての開発者がスクリプトをコミットする「UpgradeScripts」フォルダーがあります。

各スクリプトには、upg_yyyymmddhhmmss_ScriptName.sql の形式で生成されたプレフィックスがあります。したがって、デプロイされると、定義済みの順序で実行されます。データベースの一貫性を保ちます。

これは以下の SQL によって生成され、pre commit フックによって適用されます。

select 'upg_' + convert(varchar, SYSUTCDATETIME(), 112) 
    + replace(convert(varchar, SYSUTCDATETIME(), 8), ':', '') 
    + '-'  
    + 'MeaningfulScriptName'

私たちが使用するもう 1 つの便利なテクニックは、静的データと非静的データの違いを明確にすることです。したがって、私たちのデータベースには、環境間で変化する可能性のある非静的データを示す標準の「dbo」スキーマと、「静的」スキーマがあります。このスキーマのすべてのテーブルには静的 ID があるため、開発者はそれらを列挙型で使用し、スクリプトで ID を参照できることを知っています。

より正式なものを探している場合は、Red Gate にSQL Source Controlというユーティリティがあります。

または、データ層アプリケーション フレームワークの使用を検討することもできます。

于 2012-04-10T21:03:02.483 に答える
3

Liquibaseは最高のツールです。アプローチは非常にシンプルで、これがうまく機能する理由の 1 つです。

サイトでどのように機能するかを読むことができますが、基本的には、各スクリプトのハッシュを格納する単純なテーブルを作成および管理して、スクリプトがまだ実行されているかどうかを判断します。pre-sql と post-sql もあり、条件をバイパスすることもできます...それは、あなたが望む、または必要とするほとんどすべてのことを行います。また、Maven 統合も備えているため、シームレスにビルドの一部にすることができます。

私は大規模な (8 人の開発者) プロジェクトで非常にうまく使用しましたが、今では他に何も使用しません。

そしてそれは無料です!

于 2012-04-10T22:52:23.137 に答える
1

DBGhostを使用して、データベースのバージョン管理を行っています。現在のデータベースを作成するためのスクリプトは (ソース コードと共に) TFS に格納され、DBGhost を使用して差分スクリプトを生成し、環境を現在のバージョンにアップグレードします。DBGhost は、静的/参照/コード データのデルタ スクリプトを作成することもできます。

これは従来の方法からの考え方の転換を必要としますが、十分にお勧めできない素晴らしいソリューションです。これはサードパーティ製品ですが、自動化されたビルドおよび展開プロセスにシームレスに適合します。

于 2012-04-10T22:43:12.007 に答える