根据我学到的here,我正在使用这个连接字符串:
using (var conn = new SqlConnection(@"AttachDBFilename=C:\HoldingTank\AdventureWorksLT2012_Database\AdventureWorksLT2012_Data.MDF;Integrated Security=True;User Instance=true"))
...到(尝试)附加到本地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 = ... ”部分之前,但这导致了它自己的异常......
答案 0 :(得分:2)
您在连接字符串中缺少一些值。这是我最近使用的一个:
"Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True"
我认为最可能的罪魁祸首是缺少“初始目录”值。
答案 1 :(得分:1)
您需要的连接字符串取决于几个因素,例如SQL Server(LocalDB / Express / Standard)的版本,它是否是命名实例,以及身份验证的类型(SQL vs Integrated)你有。
@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"使用"用户ID =用户名;密码= PWORD;"
另外,如果sql server在同一台机器上,你可以将它用于Sql Express的Data Source参数
.\sqlexpress
..这适用于标准的Sql Server
(local)
这是我认为有用的网站:Connection Strings