无法在C#程序中连接到SQL Server,但系统能够连接
我正在尝试连接到SQL Server 2014。大约一周前,它似乎还有效,但现在不行了。系统团队最近确实升级到了2014年。奇怪的是,我能够使用SQLServerManagementStudio连接、ODBC和telnet。这只是C#的问题。此外,这个程序在另一台服务器上以编译/发布的形式运行。它只是没有使用debug(或完全编译/发布)在我的系统上运行 我检查了文档--禁用了所有防火墙,让STP检查了服务器。。。娜达 错误: System.Data.dll中发生类型为“System.Data.SqlClient.SqlException”的未处理异常 其他信息:建立与SQL Server的连接时发生网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接) 我的C#代码:无法在C#程序中连接到SQL Server,但系统能够连接,c#,sql-server,C#,Sql Server,我正在尝试连接到SQL Server 2014。大约一周前,它似乎还有效,但现在不行了。系统团队最近确实升级到了2014年。奇怪的是,我能够使用SQLServerManagementStudio连接、ODBC和telnet。这只是C#的问题。此外,这个程序在另一台服务器上以编译/发布的形式运行。它只是没有使用debug(或完全编译/发布)在我的系统上运行 我检查了文档--禁用了所有防火墙,让STP检查了服务器。。。娜达 错误: System.Data.dll中发生类型为“System.Data.
app.config
:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<add name="SQLConn"
connectionString="server=SERVER;database=DATABASE;uid=USERNAME;password=PASSWORD"/>
</connectionStrings>
</configuration>
请您的团队检查是否已启用服务器上的所有网络协议。应启用tcp或命名管道协议。
<add name="SQLConn" connectionString="Data Source=SERVER;Integrated Security=False;User ID=USER;Password=PASSWORD;Initial Catalog=DATABASE" providerName="System.Data.SqlClient" />
此错误非常有用:
(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
您的连接字符串(默认情况下为SqlConnection)似乎希望使用命名管道提供程序连接到SQL server
鉴于您的服务器最近发生了更改/升级,指定的管道提供程序很可能已被禁用
您可以通过以下方式强制连接使用简单TCP而不是命名管道:
我将尝试强制.net程序使用tcp 找到标有 通过IP地址连接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;
Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
networklibrary=DBMSSOCN
是神奇的糖
另见:
附加:
如果这仍然产生错误,那么可能有什么东西阻止了您的访问
这里是确定的通用工具
指定IP和端口号,它会告诉您端口已被阻止或过滤
我个人的历史记录是,我们安装了一个新路由器,它正在过滤端口号并停止我的sql server访问。portqueryui透露了这个问题。PortQry在sql server的“外部”工作,因此网络人员不能因为缺乏连接而责怪sql server
附加
OP在这个答案的评论中发布了这一点
portqry.exe -n db-alexandrite.domain.edu -e 1433 -p TCP exits with return code 0x00000000
这是你的问题。“db alexandrite.domain.edu”未解析
您可以通过将“db alexandrite.domain.edu”更改为该机器的实际IP地址来修复它
或者找出“db alexandrite.domain.edu”无法解决的原因。我最近用sql设置了一个新的测试服务器,并查看了通常的检查表
这4个步骤将消除大多数连接问题。但是,在新服务器上,默认情况下Windows Defender将阻止。我不得不禁用defender中的私人和公共配置文件,因为它处于阻止状态。因为我们不使用windows defender,所以这是可以的。但是,如果您依赖它,那么您需要创建一个规则。可能是一个明显的问题或注释,但是您是否用实际值替换了连接字符串中的
数据库
、用户名
和密码
@Harporsyney您是通过SQL帐户还是使用windows凭据连接到SQL server?如果使用SQL帐户,您的数据库是否配置为允许混合身份验证?此答案没有用处。此数据的上下文是什么?它应该放在配置文件中吗?你认为这将如何解决OP的问题?您需要提供更多信息。确定--系统似乎存在管道上的urning问题。我尝试了字符串并得到了此错误(您有什么建议吗?)System.Data.SqlClient.SqlException类型的未处理异常发生在System.Data.dll中。其他信息:建立到SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:TCP提供程序,错误:0-提供的参数无效。)我附加了我的答案。您可能希望查看此问题的已接受答案(以了解sql server正在哪个端口上运行):首先,让我说声谢谢您的帮助。我真的很感激——因为这个lol,我感到非常紧张。好了,我运行了程序——找回了TCP端口1433(ms-sql-s服务):监听portqry.exe-n db-alexandrite.domain.edu-e 1433-p TCP出口,返回代码0x00000000。。我尝试了telnet、sqlstudio和ODBC——所有这些都很有效。这可能是我的真实ide吗?我当前的连接字符串如下:错误是System.Data.dll中发生的“System.Data.SqlClient.SqlException”类型的未处理异常。其他信息:在建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:TCP提供程序,错误:0-在数据库查找过程中发生不可恢复的错误。)
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;
Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
portqry.exe -n db-alexandrite.domain.edu -e 1433 -p TCP exits with return code 0x00000000