2

以前はSQLServerCEでデータベースを使用していました。単純な.sdfファイルにデータベースを作成し、それをアプリケーション(空またはデータが既に追加されている)でデプロイできるため、これは簡単です。

しかし、データベースをSQL Server Expressに変更したい場合はどうなりますか?

もちろん、クライアントに必要なデータベースがすでにある場合は、何も変更する必要はありません(おそらく、接続文字列)。

ローカルのSQLServerExpressデータベースを作成する必要があるクライアントにアプリケーションを配信する場合はどうすればよいですか?.mdfファイルでこれを行う方法はありますか?

もちろん、必要に応じて、対応する外部キーなどを使用して、すべてのテーブルを作成するためのSQLコードがあります。

これは多くの開発者が直面していることだと思いますが、どうすればよいのかよくわかりません。

SQLite、MySQL、またはその他のデータベースの使用を提案しないでください。特にSQLServerでそれを行う方法を知りたいので、私はこの質問をしています。

4

2 に答える 2

2

DBファイルを添付してSQLExpressに接続できます。

data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

また、データベースをバックアップしてから、デプロイ時に復元することもできます。

更新 ただし、データをコピーせず、構造のみをコピーする場合は、SQLスクリプトを続行することをお勧めします。DBが存在するかどうかを確認し、存在しない場合は作成できます。一括挿入でいくつかのテーブルを初期化することもできます。

if db_id('dbname') is null BEGIN CREATE DATABASE ... etc

アプリケーションの種類に応じて、展開用のスクリプトを指定するか(AFAIK、VS2010はWebアプリケーション用にこれを提供します)、展開ステップとしてスクリプトを入力としてsql.exeを呼び出すことができます。

于 2011-04-25T06:51:45.573 に答える
2

考えるべきことがいくつかあります。

  1. SQLExpress自体を再配布する必要がある場合があります
  2. データベースを新しいセットアップにデプロイします
  3. 既存のデータベースを新しいスキーマ/バージョンに移行します

    追加1.この手順に関する長いが非常に説明的なドキュメント 公式ドキュメント

    2を追加します。MSDNで

    追加3.これを解決するために使用した2つの方法は、1:新しいバージョンを展開し、スクリプトを使用してデータを移行する方法と、2:現在のバージョンを新しいバージョンに変換するスクリプトを作成する方法です。

私の経験では、データベーススキーマの変更によっては、既存のデータベースを移行することが最も難しいことがわかります。

于 2011-04-25T06:59:05.187 に答える