2014-01-23 163 views
0

基于我所学到的here,我使用这个连接字符串:为什么我连接到本地SQL Server数据库失败?

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; 

之前的“附加DBFilename = ...“连接字符串的一部分,但导致它自己的例外...

回答

2

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

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

我在想最可能的罪魁祸首是缺乏“初始目录”价值。

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" 

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

而且,如果SQL Server是在同一台机器上,你可以使用这个数据源参数的SQL Express

.\sqlexpress 

..和这对标准的SQL Server

(local) 

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

+0

“B. Clay Shannon的答案是使用集成安全性的LocalDB连接字符串的一个很好的例子。” B.粘土香农是解开这个问题的猫。 –

+0

不错的链接!现在可以使用: Data Source =(LocalDb)\ v11.0; AttachDBFilename = C:\ HoldingTank \ AdventureWorksLT2012_Database \ AdventureWorksLT2012_Data.MDF; Integrated Security = True;“ –

+1

对不起,我已经编辑了我的答案,很高兴你的工作。 – agileMike

相关问题