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

C# “如何修复错误”;命名管道提供程序,错误:40-无法打开到SQL Server的连接;,c#,sql-server,visual-studio-2008,C#,Sql Server,Visual Studio 2008,因此,我正在尝试制作一个简单的C#控制台应用程序,它可以简单地查询数据库——仅此而已 然而,我不断地发现这个错误: 类型的未处理异常 'System.Data.SqlClient.SqlException' 发生在System.Data.dll中 补充资料:A 与网络相关或特定于实例 建立数据库时出错 连接到SQL Server。服务器 找不到或无法访问。 验证实例名称是否正确 正确,并且SQL Server是 配置为允许远程访问 连接。(提供程序:命名管道) 提供程序,错误:40-无法打开 与

因此,我正在尝试制作一个简单的C#控制台应用程序,它可以简单地查询数据库——仅此而已

然而,我不断地发现这个错误:

类型的未处理异常 'System.Data.SqlClient.SqlException' 发生在System.Data.dll中

补充资料:A 与网络相关或特定于实例 建立数据库时出错 连接到SQL Server。服务器 找不到或无法访问。 验证实例名称是否正确 正确,并且SQL Server是 配置为允许远程访问 连接。(提供程序:命名管道) 提供程序,错误:40-无法打开 与SQL Server的连接)

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

这是我的连接字符串:

<add name="Invoicing"
            connectionString="Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw"
            providerName="System.Data.SqlClient" />
这是我的堆栈跟踪:

   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

另外,我正在使用.NET2008和SQL2008

有人知道该怎么做吗?

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


看一看

如果以下各项有效,可能值得测试一下:

SqlConnection con = new SqlConnection("Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw");
在我看来,您的连接字符串可能不正确-没有提供用户。 我使用以下连接字符串:
“数据源=服务器名此处;初始目录=数据库名此处;用户ID=XXXX;密码=XXXX”

您说您启用了TCP/IP,但是否禁用了命名管道?我以前遇到过这个问题,使用Sql Server Configuration Manager禁用命名管道为我解决了这个问题


您也可以在连接字符串中输入,因此您可能也想尝试一下。

哇,我用实际字符串替换了对连接字符串的引用,现在它可以工作了!!谢谢你知道会发生什么吗?而且,我确实需要使用用户ID,而不仅仅是字符串中的ID是的,我甚至没有注意到这一点!谢谢+是的,我甚至没想过要这么做。不过,我已经启用了。投票,因为这仍然是一个有用的提示!
SqlConnection con = new SqlConnection("Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw");