根据我在这里学到的知识,我正在使用此连接字符串:
using (var conn = new SqlConnection(@"AttachDBFilename=C:HoldingTankAdventureWorksLT2012_DatabaseAdventureWorksLT2012_Data.MDF;Integrated Security=True;User Instance=true"))
... to(尝试)将附加到本地SQL Server DB,但我在运行时得到此例外:
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访问连接字符串,我以前也有:
Provider=System.Data.SqlClient;
在" attactdbfilename = ... "连接字符串的一部分之前
您在连接字符串中缺少一些值。这是我最近使用的一个:
"Data Source=(LocalDb)v11.0;AttachDbFilename=|DataDirectory|mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
我认为最有可能的罪魁祸首是缺少"初始目录"值。
您需要的连接字符串将取决于几个因素,例如SQL Server(LocalDB/Express/Standard)的版本,无论它是否是命名实例,以及身份验证的类型(SQL vs集成)您已经到位。
@zippit的答案是使用集成安全性的LocalDB连接字符串的一个很好的示例。
SQL Express服务器的同一字符串看起来像这样:
"Data Source=serverNameOrIpAddresssqlepxress;AttachDbFilename=|DataDirectory|mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
..和标准版的SQL Server看起来像这样:
"Data Source=serverNameOrIpAddresssqlepxress;AttachDbFilename=|DataDirectory|mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
..以及在SQL Server标准版中的命名实例看起来像这样:
"Data Source=serverNameOrIpAddressinstanceName;AttachDbFilename=|DataDirectory|mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
所有这些都假定集成身份验证。如果您设置了SQL身份验证,则将" Integrated Security = true"替换为"用户ID =用户名; password = pword;"
另外,如果SQL Server在同一台计算机上,则可以将其用于SQL Express的数据源参数
.sqlexpress
..和标准SQL Server
(local)
这是我发现有用的网站:连接字符串