将ASPNETDB.mdf上传到共享主机?

时间:2010-12-15 20:18:41

标签: sql database asp.net-mvc-2 aspnetdb

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

提前致谢,
伊利亚·

3 个答案:

答案 0 :(得分:6)

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

  1. 从Visual Studio中,加载.mdf并选择“发布到提供程序”以生成.sql文件。
  2. 打开SQL Management Studio,打开与数据库的连接并加载sql文件。添加“使用yourdbname;”在顶部将表输出到数据库,然后运行它。
  3. 现在你应该拥有完整的表格结构。剩下的就是修改web.config来读取新表:
  4. 首先是会员提供者:

    <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文件夹时完美运行时,那就是当下!

答案 1 :(得分:1)

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

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

根据您的网站托管服务商是否提供该服务,您也可以使用Visual Studio中的“发布到提供商...”选项。

答案 2 :(得分: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部分。以下两篇文章提供了更多信息。

Encrypting and Decrypting Configuration Sections

How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA