1

我正在开发 asp.net mvc2 应用程序,我使用使用 ASPNETDB.mdf 数据库的 asp.net 会员提供程序。我也有自己的数据库,现在我想知道如何将这两个数据库上传到服务器?我应该将它们作为 .mdf 文件上传还是应该使用 SQL 服务器?我更喜欢使用 SQL 服务器,如果有人知道转换和上传这两个数据库的最短方法,那将对我有很大帮助。

提前致谢,
伊利亚

4

3 回答 3

6

有趣的是,我刚刚完成了同样的事情。基本步骤如下:

  1. 在 Visual Studio 中,加载您的 .mdf 并选择“发布到提供者”以创建一个 .sql 文件。
  2. 打开 SQL Management Studio,打开与数据库的连接并加载 sql 文件。添加“使用您的数据库名称;” 最重要的是让它将表输出到您的数据库,然后运行它。
  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

作为对 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 部分。以下两篇文章提供了更多信息。

加密和解密配置部分

如何:使用 RSA 加密 ASP.NET 2.0 中的配置部分

于 2010-12-15T21:10:24.680 回答
1

对于托管解决方案(即您的托管计划不是虚拟专用服务器),您最简单的选择是生成数据库的 SQL 脚本,将这些脚本导出到 *.sql 文件,然后在托管的 SQL 连接中运行它们。

我通常会使用 SQL Server Management Studio 连接到我的 Web 主机的 SQL 实例,然后打开或粘贴由我的本地副本生成的脚本。

根据您的 Web 主机是否提供该服务,您还可以在 Visual Studio 中使用“发布到提供者...”选项。

于 2010-12-15T20:29:13.617 回答