9

私は継続的デリバリーの中毒者であり、ビルド、テスト、および展開プロセスの自動化に情熱を注いでいます。私が本当に助けが必要なことの 1 つは、自動化された展開でデータベース移行スクリプトを展開するときのベスト プラクティスは何かということです。これらは、私のテクノロジー スタックに関連する詳細です。

  • ASP.NET MVC 3 Web サイト
  • Visual Studio 2010 データベース プロジェクト
  • SQL Server 2008 R2 データベース
  • Windows Server 2008 R2
  • Web Deploy 2.0 (MS Deploy) によるリモート展開

現在、私は Web Deploy 2.0 ツールを使用して ASP.NET MVC Web サイトを展開できます (すごい、セットアップが楽しかったです!)。MSDeploy には 'dbFullSql' プロバイダーがありますが、これは移行ではなく、データベース全体の展開にのみ使用できます。MSDeploy は、リモート サーバー上で任意のプロセスを実行するための「runCommand」プロバイダーによる拡張の可能性を残しています。これを利用して、移行スクリプトをそのように実行できると思います。ただし、これを行うためのより良い方法があるべきだと感じています。

回答するときは、リモート展開ターゲットとのすべての対話に MSDeploy を使用したいことに注意してください。ただし、MSDeploy 以外のリモート ターゲットに移行を安全にプッシュするために使用できるツールを知っている場合は、それについても聞いてみたいと思います。

編集: 回答者 (回答を削除した!) は、次の記事を参照しました: http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/deploying-database-プロジェクト

これは私が知らなかった素晴らしいリソースです。このコンテンツのほとんどは、何らかの形で読んできましたが、残念ながら、この特定の記事は、私自身の疑惑を再確認しています. 基本的に、現在のツールを使用してカスタムの増分更新をプッシュする簡単な方法はありません (vaporware は、典型的な MS スタイルの将来のリリースでより優れた機能を約束します)。

記事のトピックのメモに記載されています。

... VSDBCMD を使用することは、データベースの増分公開に推奨されるアプローチです。

ただし、VSDBCMD はソースとターゲットの間のデルタ スクリプトしか生成できません。これは、特に運用環境での移行では信頼できません。Web Deploy を介して増分更新をプッシュするためにこの記事で言及されている唯一の解決策は、カスタム SQL 移行スクリプトを含むカスタム WPP ターゲット ファイルを作成することです。

データベース プロジェクトが生成する SQL 配置スクリプトを実行するように Web 配置を構成できますが、これを行うには、Web アプリケーション プロジェクト用のカスタム WPP ターゲット ファイルを作成する必要があります。これにより、展開プロセスがかなり複雑になります。さらに、Web Deploy は、既存のデータベースへの増分更新を直接サポートしていません。このアプローチの詳細については、Web パブリッシング パイプラインをパッケージ データベース プロジェクトに展開された SQL ファイルに拡張するを参照してください。

ああ!それは確かに複雑に見えます。私は以前にこれについて読んだことがあり、より良い方法があることを望んでいました。今のところ、私はまだ SQLCMD を実行する MSDeploy の「runCommand」プロバイダーに傾倒しています。

4

1 に答える 1

3

実際には、SQL スクリプトを dbFullSql プロバイダ ( -source:dbfullsql="C:\sqlcmd.sql") の「ソース」として指定すると、単純にそのスクリプトが実行されます。以前にこれを使用して、生成するカスタム移行スクリプト管理ツールをデプロイしました。

データベースのリファクタリングが必要な場合、「自動」のものはすぐに壊れる傾向があるため、データベース プロジェクトがより CD に適していることを願っています。

Web 配置 dbFullSql プロバイダーリファレンス

于 2012-07-09T03:25:53.230 に答える