【问题标题】:MVC 4 Connectionstring to SQL Server 2012MVC 4 连接字符串到 SQL Server 2012
【发布时间】:2012-10-11 15:16:50
【问题描述】:

我使用 Visual Studio 2012 在 C# 中创建了一个全新的 MVC 4 应用程序。我正在尝试连接到一个全新的 SQL Server 2012(标准)实例,但我似乎无法正确设置连接字符串.

我的 Web.config 中的连接字符串:

  <connectionStrings>
    <add name="ConnectionStringName"
        providerName="System.Data.SqlClient"
        connectionString="Data Source=MyServerName;
                          Initial Catalog=MyDatabaseName;
                          Integrated Security=False;
                          User ID=MyUserID;Password=MyPassword;
                          MultipleActiveResultSets=True" />
  </connectionStrings>

每次我从 Visual Studio 中转到 ASP.NET 配置时,页面都会加载,但只要单击“安全”,我就会收到以下消息:

您选择的数据存储存在问题。这可能是由于 通过无效的服务器名称或凭据,或不足 允许。它也可能是由角色管理器功能引起的 被启用。点击下面的按钮被重定向到一个页面 您可以选择一个新的数据存储。

以下消息可能有助于诊断问题:无法 连接到 SQL Server 数据库。

我已验证我的凭据正确(我可以使用它们通过 SQL Management Studio 进行连接)。还有什么我可以检查的吗?我被难住了。

更新:

我无法从 SQL Management Studio (MSSQLSERVER) 中连接到我的默认实例,因此我重新安装了 SQL,创建了一个命名实例 (LHSQLSERVER)。现在我可以在 SQL Management Studio 中连接到该实例,但我仍然从 ASP.NET 配置中收到相同的错误。

还有一点需要注意——我运行的 aspnet_regsql 工具来自 Framework64\v4.0.30319 文件夹。如果我使用的是 .NET 4.5,那是否正确?

更新 2:

我已尝试将我的连接字符串替换为我知道有效的远程站点(即 mysite.winhost.com)的连接字符串,但在 ASP.NET 网站配置工具中仍然遇到相同的错误? FWIW 我也在使用 Windows 8,但我认为这无关紧要。

还有什么我可以检查的吗?

更新 3:

我发现 this post 表示您不再需要用于 MVC 4 的 aspnet_regsql 工具,因此我重新运行该工具以删除所有设置,但同样没有运气。以前有人用 MVC 4 做过吗?

更新 4:

请参阅下面的答案以了解我找到的解决方案。

【问题讨论】:

  • 你能显示从你的控制器产生这个的代码吗?另外,您能否向我们展示显示角色管理器已启用的程序集(因为在错误消息中建议)
  • 它是您使用的确切连接字符串吗?我对MyServerNameMyDatabaseName 持怀疑态度。只是为了确认一下,您是否正确更换了它们?
  • @TravisJ - 我的控制器没有产生这个。在 VS2012 中单击 PROJECT -> ASP.NET Configuration 时出现此错误。
  • @paragMeshram - 是的,我确认我正确替换了它们。

标签: c# asp.net-mvc-4 visual-studio-2012 sql-server-2012 .net-4.5


【解决方案1】:

虽然 lhan16 的回答对我有所帮助,但如果说您只需要添加一个 DefaultConnection 就更简单了。我从同一个地方开始,MVC 使用的数据库连接不适用于安全框架。该框架的作者从未想过您不会使用 DefaultConnection。

【讨论】:

    【解决方案2】:

    没有尝试使用 SQL 2012,但此连接字符串在 SQL 2008 R2 中运行良好

    connectionString="Server=ServerAddress;Database=DataBaseName;User Id=Username;Password=Password;"
    

    connectionString="user id=UserName;password=Password;initial catalog=DatabaseName;data source=SQLServerIPorFQDN;Connect Timeout=30;"
    

    【讨论】:

    • 感谢您的回复。我已经尝试过你的建议,但我仍然遇到同样的错误。
    • 请试试这个 ConnectionString:user id=UserName;password=Password;initial catalog=DatabaseName;data source=SQLServerIPorFQDN;Connect Timeout=30;
    • 您能否检查到 SQL 服务器的端口 1433 的 TCP 连接是否有效?试试这个: telnet SQLServerIPorFQDM 1433 如果 SQL 服务器安装在默认 TCP 端口上
    • 我无法为我的 SQL Server 获取 IP。我尝试 ping 我的服务器(这也是我的计算机的名称),但它没有返回 IP?
    • 如果 SQL Server 和使用 SQL Server 的应用程序在同一台服务器上,则可以使用 localhost 作为服务器名称(127.0.0.1)。尝试“ping localhost”,这应该可以工作,在这种情况下,对于 server=ServarAddress,您可以使用连接字符串:server=localhost 或 server=127.0.0.1
    【解决方案3】:

    感谢大家的意见,我终于找到了解决办法。我遇到了 this article,它描述了 VS 2012 用于 MVC 4 的新 Simple Membership。我基本上只是重新开始,创建一个新数据库,新 MVC 4 项目,然后按照文章。果然,只要在网页上“注册”就在我的数据库中创建了表并存储了用户信息。

    【讨论】:

      【解决方案4】:

      您可能需要在配置中启用角色管理器

      <roleManager enabled="true"/>
      

      【讨论】:

      • 感谢您的回复。我尝试在 下添加它,但我仍然遇到同样的错误。
      【解决方案5】:

      如果您能够使用 Sql Management Studio 进行连接,那么我相信连接字符串肯定有问题 -

      连接字符串您使用的是以下格式-

      Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
      User ID=myDomain\myUsername;Password=myPassword;
      

      尝试在数据源字段中使用IP Address, Port -

       <connectionStrings>
          <add name="ConnectionStringName"
              providerName="System.Data.SqlClient"
              connectionString="Data Source=190.190.200.100,1433;
                                Initial Catalog=MyDatabaseName;
                                Integrated Security=False;
                                User ID=MyUserID;Password=MyPassword;
                                MultipleActiveResultSets=True" />
        </connectionStrings>
      

      或尝试其他变体 -

      标准安全

      Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
      

      可信连接

      Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
      

      连接到 SQL Server 实例

      Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
      Password=myPassword;
      

      参考 - http://www.connectionstrings.com/sql-server-2012

      【讨论】:

      • 我如何知道要使用的 IP 地址和端口?
      • 保持端口 1433 不变,因为它是默认值。尝试ping 命令获取 IP 地址。只需在命令提示符中输入ping MyServerName,您就会在输出中看到 IP 地址。
      • 我认为可能有其他问题,因为我无法使用默认实例(即 MyServerName\MSSQLServer)在 SQL Management Studio 中进行连接。
      • 那个 sql server 数据库是否安装在您正在开发的同一系统上?
      • @lhan16 - 通过 Management Studio 连接时您使用的是哪种身份验证模式? Windows 身份验证还是 Sql Serve 身份验证?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      相关资源
      最近更新 更多