【问题标题】:Why is my connection to a local SQL Server db failing?为什么我与本地 SQL Server 数据库的连接失败?
【发布时间】:2014-01-23 20:18:38
【问题描述】:

根据我学到的here,我正在使用这个连接字符串:

using (var conn = new SqlConnection(@"AttachDBFilename=C:\HoldingTank\AdventureWorksLT2012_Database\AdventureWorksLT2012_Data.MDF;Integrated Security=True;User Instance=true"))

...to(尝试)附加到本地 SQL Server 数据库,但我在运行时收到此异常:

System.Data.SqlClient.SqlException was unhandled by user code
  HResult=-2146232060
  Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
  Source=.Net SqlClient Data Provider

根据我的旧版 MS Access 连接字符串,我之前也有:

Provider=System.Data.SqlClient;

在连接字符串的“AttachDBFilename=...”部分之前,但这导致了它自己的异常...

【问题讨论】:

    标签: sql-server tsql connection-string named-pipes sqlclient


    【解决方案1】:

    您在连接字符串中缺少一些值。这是我最近使用的一个:

    "Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
    

    我认为最可能的罪魁祸首是缺少“初始目录”值。

    【讨论】:

      【解决方案2】:

      您需要的连接字符串取决于几个因素,例如 SQL Server 的版本(LocalDB/Express/Standard)、它是否是命名实例以及您在其中的身份验证类型(SQL 与集成)地点。

      @zippit 的答案是使用集成安全性的 LocalDB 连接字符串的一个很好的例子。

      Sql Express 服务器的相同字符串如下所示:

      "Data Source=serverNameOrIpAddress\sqlepxress;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
      

      .. 标准版的 Sql Server 看起来像这样:

      "Data Source=serverNameOrIpAddress\sqlepxress;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
      

      ..对于标准版 Sql Server 上的命名实例,将如下所示:

      "Data Source=serverNameOrIpAddress\instanceName;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
      

      所有这些都假定集成身份验证。如果您设置了 sql 身份验证,则可以将“Integrated Security=True”替换为“User Id=username; Password=pword;”

      另外,如果 sql server 在同一台机器上,你可以将它用于 Sql Express 的 Data Source 参数

      .\sqlexpress
      

      ..这适用于标准 Sql Server

      (local)
      

      这是一个我发现有用的网站:Connection Strings

      【讨论】:

      • “B. Clay Shannon 的回答是使用集成安全性的 LocalDB 连接字符串的一个很好的例子。” B. Clay Shannon 是解决这个问题的猫。
      • 不错的链接!现在可以使用:Data Source=(LocalDb)\v11.0;AttachDBFilename=C:\HoldingTank\AdventureWorksLT2012_Database\AdventureWorksLT2012_Data.MDF;Integrated Security=True;"
      • 是的,很抱歉引用不正确。信用属于@Zippit;我已经编辑了我的答案。很高兴你成功了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 2021-02-08
      相关资源
      最近更新 更多