2016-04-14 5 views
0

MS-SQL-Serverを使用してデータを保存するアプリケーションがあります。アプリケーションをいくつかのステップで公開します。ユーザーは最初の基本機能をテストし、機能を追加できます。ライブ環境でMS-SQL-Serverデータベースにパッチを付ける

おそらく、これによってデータベースが変更されます。初期段階では、データベース全体を削除し、スクリプトを使用してすべてを新たに作成することができます。しかし最終的には、ユーザーはテストデータを保存したいと考えています。たとえば、テーブルに新しい列を追加すると、テーブル全体を削除して新たに作成して、今までのプロセスでユーザーが保存したすべてのデータを失うことはありません。

私が必要とするのは、myDatabase v1.0をmyDatabase v2.0に更新するスクリプトです。

私の質問は、このような更新スクリプトを作成する最良の方法は何ですか?手動ですべての変更を追跡し、更新スクリプトを自分で組み立てなければなりませんか?または、古いデータベースと新しいデータベースから更新スクリプトを(半)自動的に作成する機能がありますか?

最後に、このパッチを適用する最も良い方法は何ですか?私はASP.NET Web-APIを持っているので、コントローラapi/updates/v1.0-to-v2.0を作成することができます サーバでスクリプトを適用するコードはどのようになりますか?事前に

おかげで、
フランク

+1

Visual StudioデータベースプロジェクトまたはSqlServerDataToolsを使用している場合、これらの差分/公開操作ははるかに簡単になります。アップデートやパッチの性質によっては、いくつかのダウンタイムが必要になることがあります。 – StingyJack

答えて

0

私はこの非常に問題の解決に取り組んでいる、dbpatcher.comをチェックアウトし、私が作成したソフトウェアは、簡単にデータベースの変更を移行させるのに役立ちます。私は現時点でウェブサイトをまとめるので、フィードバックを歓迎するでしょう。私は出版の詳細を把握しようとしているので、プログラム自体はまだ利用できません。

0

これが継続的な懸案事項(法人)である場合、実際には異なる環境、すなわち、テスト、ステージング、およびプロダクション。このようにして、デプロイメントとデータベースのスクリプティングの変更を、元の環境(本番環境とまったく同じ)でテストできます。

あなたの質問に答えるには、これを行うには本当に良い方法がありません。私は、人々がdiffツールを使ってスキーマの違いを検出し、2つのスキーマを同期させるためのスクリプトを作成するのを見ましたが、それは愚かな証拠ではありません。

変更をスクリプト化し、バージョン管理とインストール手順(手動または自動)を組み合わせることは、一貫した結果を得るための唯一の方法であり、時には失敗することもあります。

コード第1のエンティティフレームワークは、この問題を解決しようとしていますが、多くのショップにとってはオプションではありません。

私はこれを管理するための優れたツールを見たいと思っていますが、多種多様なフレームワークと人為的ミスが最大の問題です。

ダウンタイムの点では、Webアプリケーションのライブインプレースアップグレードなどは実際にはありません。ロードバランスされたWeb/Appサーバーの1つのセットを一度に更新してから、ユーザーを新しいソフトウェアに失敗させるなど、最小限に抑える方法があります。テーブルを変更すると、テーブルをロックしてユーザーを中断させる可能性はかなり低くなります。

0

返信いただきありがとうございます。

私はさまざまな環境を持っていますが、私の懸案事項は、実稼働環境でデータを失うことなくデータベーススキーマを変更する方法です(可能であれば、もちろん可能です)。ダウンタイムはあまり問題にはなりません。私はまだ生産的ではないので、データベース全体を再作成するためのスクリプトを作成するだけですが、ユーザーにライブデータが保存されると、おそらくちょっとしたことが起こります。

redgateの素晴らしいツールがありますが、その問題を解決するようですが、まだ確認していません。

関連する問題