1

私はasp.netmvc2アプリケーションを開発しており、ASPNETDB.mdfデータベースを使用するasp.netメンバーシッププロバイダーを使用しています。私も自分のデータベースを持っていますが、これら2つのデータベースをサーバーにアップロードする方法を知りたいですか?それらを.mdfファイルとしてアップロードする必要がありますか、それともSQLサーバーを使用する必要がありますか?私はSQLサーバーを使用することを好みます。誰かがこれらの2つのデータベースを変換してアップロードする最短の方法を知っているなら、それは私に大いに役立ちます。

よろしくお願いします、
Ilija

4

3 に答える 3

6

おかしい私はちょうど同じことをし終えました。基本的な手順は次のとおりです。

  1. Visual Studioから.mdfをロードし、[プロバイダーに公開]を選択して.sqlファイルを作成します。
  2. SQL Management Studioを開き、データベースへの接続を開いて、SQLファイルをロードします。「useyourdbname;」を追加します その上にテーブルをデータベースに出力させてから実行します。
  3. これで、完全なテーブル構造ができました。残っているのは、新しいテーブルを読み取るようにweb.configを変更することです。

まず、メンバーシッププロバイダー:

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider"
         type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a "
         connectionStringName="ConnectionStringLoginInfo"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         requiresUniqueEmail="false"
         passwordFormat="Hashed"
         maxInvalidPasswordAttempts="5"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         passwordStrengthRegularExpression=""
         applicationName="/"
            />
  </providers>
</membership>

現在、役割プロバイダー:

<roleManager enabled="true">
  <providers>
    <clear/>
    <add name="AspNetSqlRoleProvider"
         type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0,  Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a "
         connectionStringName="ConnectionStringLoginInfo"
         applicationName="/"
            />
  </providers>
</roleManager>

そして最後に、WebPartプロバイダーを使用する場合は、次のようにします。

<webParts>
  <personalization defaultProvider="SqlDatabaseProviderDRDBLoginInfo">
    <providers>
      <clear/>
      <add connectionStringName="ConnectionStringLoginInfo"

           type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider"
           name="SqlDatabaseProviderDRDBLoginInfo"/>
    </providers>
  </personalization>
</webParts>

この例では、接続文字列を呼び出しましたConnectionStringLoginInfoが、名前を付ける場合は、必ず接続文字列の部分に設定してください。それも貼り付けないでください:)

これはすべて、私が言うよりもはるかに時間がかかりましたが、App_Dataフォルダーが削除された状態でアプリが問題なく動作しているのを見ると、それはかなりの瞬間でした!

于 2010-12-15T20:28:48.630 に答える
1

ホストされたソリューションの最も簡単なオプション(つまり、ホスティングプランが仮想プライベートサーバーではない)は、データベースのSQLスクリプトを生成し、これらを* .sqlファイルにエクスポートしてから、ホストされたSQL接続で実行することです。

通常、SQL Server Management Studioを使用してWebホストのSQLインスタンスに接続し、ローカルコピーによって生成されたスクリプトを開くか貼り付けます。

Webホストがサービスを提供しているかどうかによっては、VisualStudioの[プロバイダーに公開...]オプションを使用できる場合もあります。

于 2010-12-15T20:29:13.617 に答える
1

Blindyの回答を補足するものとして、プロバイダーを構成する別の方法は、ほとんどのプロバイダーで使用されるデフォルトのConnectionStringであるLocalSqlServerの接続文字列設定を変更することです。これを行うには、次のようにweb.config内の特定のConnectionStringをオーバーライドするだけです。

<connectionStrings>
    <clear />
    <add name="LocalSqlServer" connectionString="change this to be the details of your host database" providerName="System.Data.SqlClient" />
</connectionStrings>

また、connectionStringsセクション全体をクリアしたくない場合は、次のように特定の接続文字列を削除できます。

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" connectionString="change this to be the details of your host database" providerName="System.Data.SqlClient" />
</connectionStrings>

これが機能するのは、データストアにデフォルトでSql Serverを使用するすべてのプロバイダー(メンバーシッププロバイダーなど)が、デフォルトで「LocalSqlServer」接続文字列を使用するためです。したがって、これをオーバーライドする場合、異なる接続文字列を指すように各プロバイダーを変更する必要はありません。

また、セキュリティ上の理由から、web.configファイルのconnectionStringセクションの暗号化を検討することをお勧めします。次の2つの記事で詳細を確認できます。

構成セクションの暗号化と復号化

方法:RSAを使用してASP.NET2.0の構成セクションを暗号化する

于 2010-12-15T21:10:24.680 に答える