5

データベースプロジェクトがあり、Database.sqldeployment設定で[データベースを常に再作成する]チェックボックスをオフにしていないとします。また、デプロイしているデータベースの名前ですでにデータベースがあるサーバーにデプロイするとします。VS2010データベースプロジェクトの展開でドロップデータベースが生成されないようにするにはどうすればよいですか?

データベースのデプロイメントでは、「DROP DATABASE」ステートメントを使用してスクリプトを生成しますか?

データベースプロジェクトを右クリックして[Deploy]を選択して生成されたデプロイメントスクリプトによってデータベースが破棄されないようにするには、これを防ぐために取るべきステップは何ですか?

+0

プロジェクトや設定ファイルを投稿する可能性はありますか? AFAIK DROP DATABASEをスクリプト化する唯一のオプションは、あなたが言及したオプションです。 –

+0

プロジェクトは顧客に属しているため、残念ながら、そうではありません。また、私もこれを再現することはできません。プロジェクトはドロップなしでスクリプトを生成するようになりました。私はそれが以前にドロップでスクリプトを生成する原因になっている可能性があるものを把握しようとしています。下のFrankは、Target Connectionについてよく考えました。ターゲット接続が設定されているにもかかわらず、それが自分のプロジェクト設定でのみ設定されていて、独立した環境設定では設定されていない可能性があります。私はまた、ターゲット接続が定義されている可能性があると考えていましたが、VPNではできませんでした。 idk。 –

+0

ああ、意味があります。うん、孤立したdevとプロジェクトの設定はちょっと混乱するかもしれません。彼らがSSDTでそのアイデアを捨ててくれてうれしい。デプロイメントがインタラクティブに行われた場合、またはビルドサーバーがそれを実行したかどうかを思い出してください。後者の場合は、ビルドログに役立つものがあるかもしれません。 –

答えて

3

「常にデータベースを再作成する」チェックボックスをオフにしないことに加えて、データベースプロジェクトのプロパティページの「開発」タブもチェックする必要があります。ターゲット接続を定義していることを確認してください。定義しない場合、プロジェクトは常に存在し、ターゲットデータベースが存在しない場合にのみデプロイされます。この動作は仕様です。詳細はlinkを参照してください。

私の提案は、Windows認証を使用して接続を作成し、各ユーザーが想定されている拡張機能にアクセスできるようにすることです。また

あなたは、私が個人的にちょうどスクリプトを作成し、上にあるように、手動でそれを実行するために配備アクションを設定

各展開の構成(例えば、デバッグ、リリース、など)のためにこれを行わなければならないことに注意してください安全な側!

+1

ありがとうフランク。実際には、SSMSから手動で実行できるようにスクリプトを生成するようにdeployアクションを設定しましたが、そのプロジェクト構成に対して定義されたターゲット接続がありました。しかし、スクリプトにはDropステートメントが残っていました。あなたはいくつかの素晴らしい提案をしてくれました。あなたが提供した素晴らしいリンクを読んだ後でさえ、私の展開スクリプトがドロップデータベースを生成した他の理由がまだあるように感じます。 –

関連する問題