問題タブ [database-versioning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1515 参照

java - JavaベースのWebアプリケーションの記事改訂履歴の実装

JavaベースのWebアプリケーションの記事の改訂履歴を実装してAuditLogに保存する方法についてのアイデア

StackOverflowには、SVNクライアントのように、バージョンごとの違いを確認できる機能がすでに備わっています。

これは、実装の問題というよりも設計の問題です。

さらに:これらの変更をWebページにどのように表示しますか?

追加:提案されたソリューション

Hibernate Interceptorは、保存プロセスをインターセプトし、CastorXMLを使用し古いオブジェクトのXML文字列を作成します。

クラスとIDは、特定のオブジェクトのリビジョンを取得するために使用されます。

google-diff-match-patchは、HTMLdiffファイルの作成に使用されます

0 投票する
9 に答える
1347 参照

c# - 手動生成スクリプトを使用したデータベース変更管理

私のニーズはかなり基本的なものであり、ホイールを再構築したくありません。私は自分のデータベースをスクリプト化するのが好きで、あるバージョンから次のバージョンに更新するためのスクリプトを書きました。つまり、001-create-tables.sql、002-alter-column.sql などです。

私が欲しいのは、単純なツール コマンド ラインまたは MsBuild です。これは、データベースを調べて、データベースのバージョンを確認し (いくつかのテーブル規則を使用して)、現在のデータベース バージョンよりも大きい番号を持つフォルダー内のすべてのスクリプトを実行します。また、スクリプトが失敗した場合やエラーがスローされた場合にスクリプトをロールバックして、その時点で停止するツールも必要です。

それが私が望んでいることですが、独自のSQLスクリプトを書きたいのですが、慣習を変更してもかまいません。また、あまり必要としないので、ツールを無料またはオープンソースにしたいと考えています。私のプロジェクトは C# であるため、ツールを .Net に組み込むことをお勧めします。

0 投票する
2 に答える
1317 参照

sql-server - Visual Studio データベース プロジェクトでの重要な増分変更の展開

たとえば、ユーザー ID 列を UUID データ型から Windows ドメイン ユーザー名に変換するなど、バージョン A から B にアップグレードするには「カスタム」作業が必要です。

これを自動的に展開できるようにするにはどうすればよいですか? つまり、開発者がプロ​​ジェクトを右クリックし、[デプロイ] をクリックして、十分に古いデータベースを使用している場合にこのロジックを実行できるようにしたいと考えています。

データベース プロジェクトにそのようなログインの場所は見当たりません。そのような「アップグレード スクリプト」の規定はないようです。これは本当に不可能ですか?明確にするために、ロジックを自動的に生成することはできませんが、必要に応じて自動的に実行したいと考えています。

もちろん、最初の論理的な障害は、そのようなロジックを更新する必要があるかどうかを展開ユーティリティが認識できないことです。これに対するロジックも提供できると思います (たとえば、バージョン テーブルを確認し、最新のバージョンが <5.0 の場合、このアップグレードを実行し、後で新しいバージョンの行を追加します)。

これは可能ですか?複雑なカスタム変更スクリプトを使用して、展開を完全に自動化できますか? もちろん、すべてのカスタム変更ロジックを(間もなく)巨大なビルド前またはビルド後のスクリプトに貼り付ける必要はありません...

0 投票する
4 に答える
1610 参照

database - Delphi を使用したインストール済みアプリケーションのデータベース バージョン管理

私は多くの Delphi アプリケーションに取り組んでおり、新しいバージョンがリリースされたときや、ユーザーが追加モジュールをインストールすることを選択したときに、現場で独自のデータベース構造をアップグレードする必要があります。アプリケーションはさまざまな組み込みデータベースを使用しています (現在 DBISAM と Jet ですが、これは変更される可能性があります)。

過去に、各テーブルに格納できるユーザー バージョン番号を使用して、DBISAM でこれを実行しました。追加の空のデータベース ファイル セットを出荷し、起動時に FieldDefs を使用して各テーブルのバージョン番号を比較し、必要に応じてインストールされたテーブルを更新しました。これはうまくいきましたが、データベースの予備のコピーを出荷しなければならないのは不器用であることがわかりました。新しいバージョンの DBISAM ではテーブルの再構築方法が変更されているため、とにかくこれを書き直す必要があります。

これを実装する方法は 2 つあります。データベースにバージョン番号を格納する方法と、DDL スクリプトを使用して古いバージョンから新しいバージョンに移行する方法と、データベース構造の参照バージョンをアプリケーション内に格納して、開始時にデータベースへの参照を比較する方法です。アップし、アプリケーションで DDL コマンドを生成してデータベースをアップグレードします。

おそらく両方の部分を実装する必要があると思います。アプリケーションが起動するたびに (遅すぎる) データベースを参照構造と比較したくないので、ユーザーが古い構造を使用しているかどうかを検出するために、データベース構造のバージョン番号が必要です。ただし、データベースが過去に部分的に更新された可能性がある場合、またはユーザー自身がデータベース構造を変更した可能性がある場合、事前に作成されたスクリプトを使用して構造をアップグレードできるかどうかはわかりません。実際の更新については diff を参照してください。

質問を調査すると、データベースのバージョン管理ツールがいくつか見つかりましたが、それらはすべて SQL Server を対象としており、実際のアプリケーションの外部に実装されているようです。アプリケーションに緊密に統合され、さまざまなデータベース要件に適応できるプロセスを探しています (さまざまな DDL の違いを処理するために、アダプター、カスタム子孫クラス、またはイベント コードを作成する必要があることはわかっています)。データベース、それは私を悩ませません)。

これを行う、またはそれを失敗させる既製のものを知っている人はいますか?

  1. ジェネリック リレーショナル データベース構造の参照バージョンをアプリケーション内に格納する最良の方法。

  2. 参照を実際のデータベースと比較する最良の方法。

  3. データベースを更新するための DDL を生成する最良の方法。

0 投票する
5 に答える
5862 参照

sql-server - SQLServerデータベーススキーマのバージョン管理と更新

私のアプリケーションでは、更新シナリオをサポートする必要があり、データベースが影響を受ける可能性があります。

中間バージョンをインストールせずに、古いバージョンから最新バージョンに更新できるようにしたい。たとえば、バージョンA(最も古い)、B(中間)、およびC(新しいバージョン)があるとします。バージョンAをバージョンCに直接更新できるようにしたい。これは単純なアプリケーションファイルの場合、古いものを新しいものに置き換えるだけです。ただし、データベースの場合、データベーススキーマをAからCに直接変更するSQLスクリプトを生成するのではなく、最初にスクリプトを適用してスキーマをAからBに、BからCに変更します。

SQL Serverデータベースのデータベースバージョンを保存するにはどうすればよいですか?バージョンテーブルを実装する代わりに、設定できる特別なプロパティはありますか?私のコード(.NET)では、データベースバージョンを読み取り、それに応じて更新SQLスクリプトを適切な順序で実行したいと考えています。

SQLServer2005とSQLServer2008の両方を使用します。

0 投票する
7 に答える
20481 参照

sql-server - SQL Server を使用してデータベースの変更を展開する簡単な方法は何ですか?

私が取り組んでいるソフトウェア システムは、医療費請求システム、大量のデータとデータ テーブル、およびストアド プロシージャです。

私は記事「より良いコードへの 12 ステップ」を読んでいて、The Joel Test #2 で次のように述べています。

これは展開ビルドを意味するのでしょうか (顧客が展開を更新できるようにするため)。

今、私が直面している主な問題は、ワンステップのデータベース更新をどのように行うかということです。

現時点では、データベースに変更を加えると、すべての変更が記録され、データベース更新スクリプトに追加されます。このスクリプトは、デプロイ トゥ カスタマー ビルドが作成されるときにバージョン番号を取得します。

これを行う簡単な方法はありますか?データベーススキーマを「前後」に見て、私が言及したような更新スクリプトを作成するスクリプトまたはアプリケーションはありますか?

それとも、これは誰もが行う方法であり、信じがたいですが、もっともらしいと思います.

自動化されたシステムはエラーを減らし、展開のビルド時間を大幅に短縮します。その方法を知りたいです。

0 投票する
2 に答える
1296 参照

sql - .NET データベースのバージョン管理スクリプト ランナーが必要

私はバージョン管理データベースを調べていて、これを行う方法に関する通常の記事 (コーディング ホラー、コードへの頌歌など) に出くわしました。これはすべて私にとって完全に理にかなっていますが、SQLスクリプトを実行するスクリプトランナーを見つけようとしています. これらの記事はすべて、それらを自動的に実行する方法について言及していますが、推奨事項はありません。

これらのスクリプトを実行するためのユーティリティを知っている人はいますか? 理想的には、次のように機能するものです。

  1. すべてをトランザクションで実行するため、1 つの更新が失敗すると、すべてが失敗します
  2. スキーム バージョン データベース テーブルの名前を制御できます
  3. アップグレードが行われた場合に常に実行される一連のスクリプトを持つ機能
  4. 自動化されたタスクの一部として実行可能

    編集

  5. オープンソース

0 投票する
5 に答える
5999 参照

.net - Entity Framework 4 のデータベース移行

私はEntity Framework 4で遊んでおり、モデル駆動型のアプローチを使用してエンティティからデータベーススクリプトを生成しています。これは素晴らしいことですが、データベースのバージョン管理に関しては、これがどのように機能するかわかりません。アクティブなレコード タイプの移行フレームワークを使用したい場合は、逆の方法でデータベースからエンティティを生成する必要があると思いますか? モデル駆動型アプローチを使用してデータベースを適切にバージョン管理する方法はありますか?

0 投票する
4 に答える
305 参照

c# - VS 2005 を使用して SQL Server スキーマをバージョン管理する方法は?

私は C# プログラミングは初めてで、Ruby on Rails を使って最近始めたところです。RoR では、データベースのスキーマ マイグレーションを記述できることに慣れています。C#/SQLServer プロジェクトで同様のことができるようにしたいと考えています。

VS 2005 ツールセット用のツールはありますか?

VS 2005 の外部で直接 SQL Server で RoR 移行を使用するのは賢明でしょうか? 言い換えれば、ActiveRecord:Migration from Rails を使用してすべてのスキーマのバージョン管理を処理しますが、それ以外は何も処理しません。

C# および VS 2005 以外の移行を別のツールで処理する場合、RoR ActiveRecord:Migration を使用するのが最適ですか、それともより適したものがありますか?

0 投票する
2 に答える
5898 参照

database - PostgreSQL でテーブル変更の監査/バージョン管理を実装する方法

PostgreSQL で Java/Spring/Hibernate を使用した新しいシステムを実装しています。このシステムは、テーブル内のレコードで変更/削除が行われるとすぐに、すべてのレコードのコピーを作成する必要があります。その後、監査テーブルはレポートによってクエリされ、ユーザーにデータが表示されます。

col1、col2 と呼ばれる約 20 列を持つ ENTITY_VERSIONS と呼ばれるテーブルに、変更された行 (削除された行) のコピーを作成するトリガーをテーブルに設定することにより、この監査/バージョン管理機能を実装することを計画していました。 、col3、col4 など、上記のテーブルの列を格納します。ただし、問題は、バージョン管理するテーブルが複数あり、すべてのテーブルのバージョンを格納する TARGET テーブル (ENTITY_VERSIONS) が 1 つしかない場合、TARGET テーブルをどのように設計すればよいかということです。

または、バージョン管理が必要なテーブルごとに VERSION テーブルの COPY がある方がよいでしょうか?

監査/バージョン管理を実装するための PostgreSQL トリガー (および関連するストアド プロシージャ) コードへのいくつかのポインターを共有できる場合は、ボーナスになります。

PS : SQL Server で監査テーブルを実装するための提案を見ましたか? OldValue と NewValue がどのタイプであるべきかわからないことを除いて、答えのようなものですか?

PPS : テーブルが HARD 削除の代わりに SOFT DELETE (ファントム削除) を使用している場合、アドバイスは変わりますか?