如何修复错误“命名管道提供程序,错误:40 – 无法打开到SQL Server的连接”

所以我试图创建一个简单的C#控制台应用程序,只需查询数据库 – 仅此而已。

但是,我一直收到这个错误:

System.Data.dll中发生了未处理的“System.Data.SqlClient.SqlException”类型exception

附加信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 – 无法打开与SQL Server的连接)

现在,我已经尝试了一切! 我已经编辑了所有设置(添加了防火墙例外,启用了TCP / IP,几乎可以通过谷歌搜索找到任何解决方案,我做了)。 当我尝试使用SQL Management Studio使用我的连接字符串中的相同凭据建立连接时,一切都完美无缺。 BUt由于某种原因,Visual Studio无效。

这是我的连接字符串:

 

这是app:

 class Program { public static void Main(string[] args) { Invoicing db = new Invoicing("Invoicing"); var q = from sin Invoice where s.Date == 201007 select s; foreach(var sin q) Console.WriteLine("{0}, {1}", s.CreateDate, s.EndDate); } } 

这是我的堆栈跟踪:

  at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.GetQueryText(Expression query) at System.Data.Linq.DataQuery`1.ToString() 

我使用SqlMetal创建了DataContext,如果这很重要的话。

另外,我使用的是.Net 2008和SQL 2008。

有没有人对如何做有任何想法?

如果以下工作可能值得测试:

 SqlConnection con = new SqlConnection("Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw"); 

对我来说,你的连接字符串可能不正确 – 没有用户提供。 我使用以下连接字符串:“Data Source = ServerNameHere; Initial Catalog = DBNameHere; User ID = XXXX; Password = XXXX”

你说你启用了TCP / IP,但是你禁用了命名管道吗? 我之前遇到过这种情况,使用Sql Server配置管理器禁用命名管道为我解决了这个问题。

您还可以在连接字符串中指定协议 ,因此您可能还想尝试这样做。

我不认为“身份证”是对的。 我知道连接字符串中有很多这些东西的别名,但我总是使用“用户ID”

看看这里