開発フェーズでスキーマ比較から定期的にsync'edされるSQL 2008データベースプロジェクトがVisual Studio 2010にあります。この同じプロジェクトは、TFSソース管理下にもあります。私は2つの環境、DebugとProductionを持っています。各環境は、IISとSQL Serverの両方を実行する単一のマシンです。ただし、本番環境では、標準のc:¥program files¥sql ....¥dataの開発サーバーに対して、データベースD:¥Data¥およびE:¥Logs¥と異なるデータおよびログパスがあります。SQLデータベースプロジェクトのデプロイメント用にsqlcmdvarsのDefaultDataPathをオーバーライドする
私がしようとしているのは、デプロイメントを本番環境にデバッグする方法をセットアップすることです。 WebDeploy 2.1のセットアップが完了し、Webサイトプロジェクトの右クリックのコンテキストメニューからVisual Studioで展開パッケージをビルドします。 RDPを使用して展開パッケージを実動サーバーに手動でコピーしたいので、ここではワイヤの問題はありません。展開パッケージの設定は、[パッケージ/パブリッシュSQL]タブで構成されたすべてのデータベースを含めるように設定されています。 [パッケージ/パブリッシュSQL]タブでは、代わりにSQLデータベースプロジェクトからデプロイしたいので、既存のデータベースのデータ/スキーマからデータを取得しません。だから、私はちょうど私のデータベースプロジェクトの/ sql/releaseフォルダにある事前生成された.sqlスクリプトファイルを指しています。 VSDBCMD.exe/ddを使用してSQLプロジェクトのポストビルドイベントで.sqlスクリプトを生成します。 -/a:Deploy/manifest:...これにより、単純なソリューションがすべて再構築され、次にウェブサイトプロジェクトが再構築されます。 deployを使用すると、常に最新の.sqlスクリプトがデプロイメントパッケージに含まれます。
これは素晴らしいことですが、私はここで大きな問題を抱えています。私は克服できないようです。これは、データベースのデータとログファイルのパスがデバッグと本番環境とで異なることと関係しています。実際に、プロダクションサーバー上のIISのWebDeploy中にc:\ programsファイル... \ MyDatabase.mdfファイルが見つからないという例外が表示されます。この例外の後では、データベース全体が削除されます。デプロイメントを行う直前に作成した空のデータベース。私はそれをしゃがんでみました。私はそれについてどのように感じているのか分かりませんが、私はこれに対する信頼できる解決策を見つけることができればと願っています。
私は展開中にパスを変更する方法を熱心に探していましたが、Schema Objects \ Databaseレベルのオブジェクト\ Storage \ Filesの* .sqlfiles.sqlファイルのパスを変更すると言われる場所が数多く見つかりました。スキーマ比較とデバッグSQLサーバーデータベースからの書き込みのために、それらに指定されたパスが展開しようとしています。ここでパスを変更すると、次回のスキーマ比較と書き込みを行うまで、一時的に動作し、sqlfiles.sqlファイルはDebugデータベースの情報で再度上書きされます。スキーマ比較時にこれらのファイルを更新しないように覚えておく必要はありません。間違いがあれば本番データベースを削除する可能性があるからです。
私の救いは、私のRelease.sqlcmdvarsファイルにあると思います。実際には、デフォルトのデータベースパスを入力できる場所がわかりますが、「データベースファイルがデフォルトで作成された場所(配置時に設定された場所)」のように読み取り専用フィールドに表示されます。ここでパスを指定することができれば壮大になるでしょう。 * .sqlfiles.sqlファイルからのパスを上書きする変数をここに指定する方法はありますか?
私が働いているソリューションでは、sqlcmdvarsにPath1とPath2という2つのカスタム変数があり、そのようなことを行う予約された名前だと思いました。ただし、これは私のソリューションでは機能しません.2つのソリューションの違いは、もう1つのソリューションがTFSビルドコントローラ経由で展開されることです。 TFSビルドコントローラのルートを実行することは、サードパーティのソースコントロールサービスを使用している間に費用を節約することを選択したため、本当にオプションではありません。
これについての助力は素晴らしいことです。私はこれまでにも、デバッグとリリースのために別々の* .sqlfiles.sqlファイルを作成し、設定に応じてdbprojファイルを使用するように設定しましたが、どちらも機能していないようです。また、sqlfileのカスタムPATH1変数を使用します。FILENAME = '$(PATH1)\ Cameleon_log.ldf'のようなsqlファイルは動作しません。私は真剣にこれが難しいはずがないと思います。私はここに何か簡単に欠けていますか?
ありがとうございます!