我在几种情况下看到这种情况,并且在基于Web的应用程序连接到SQL 2008 R2服务后端时是间歇性的。用户正在进行点2点连接,并且可以打开和关闭此功能。认为这是带宽问题,直到我开始在与此SQL服务器位于同一核心交换机上的终端服务器上看到它。我已经检查了远程连接已启用,在TCP / IP配置中正确设置了端口1433,我看到的唯一原因是远程连接中的超时设置设置为100000而不是无限制。
错误是
System.Data.SqlClient.SqlException
(0x80131904
):网络相关或 建立连接时发生特定于实例的错误 SQL Server。服务器未找到或无法访问。校验 实例名称正确且SQL Server配置为 允许远程连接。 (提供者:命名管道提供商,错误:40 - 无法打开与SQL Server的连接)--->
System.ComponentModel.Win32Exception
(0x80004005
):网络路径 找不到at
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.b__0() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) at System.Data.Entity.Core.EntityClient.EntityConnection.Open() ClientConnectionId:00000000-0000-0000-0000-000000000000
答案 0 :(得分:2)
答案 1 :(得分:1)
我遇到了同样的问题。
确保在SQL Server配置中 - &gt; SQL Server服务 - &gt; SQL Server代理已启用
这解决了我的问题
答案 2 :(得分:0)
检查以下步骤。
答案 3 :(得分:0)
检查您的路线,2014年9月28日的更新对我们造成了影响。我们不得不调整旧服务器并添加新路由。这是文章http://www.rackspace.com/knowledge_center/article/updating-servicenet-routes-on-cloud-servers-created-before-june-3-2013
答案 4 :(得分:0)
查看我的帖子here
你好吗?我在尝试连接时遇到了同样的问题 MSSQL Server远程使用jdbc(debian上的dbeaver)。过了一会儿,我发现我的防火墙配置没有 正确。所以也许它可以帮到你!
配置防火墙以允许与SQL相关的网络流量 服务器和SQL Server Browser服务。
必须在Windows防火墙中配置四个例外以允许访问 到SQL Server:
TCP端口1433的端口例外。在“新建入站规则向导”中 对话框,使用以下信息创建端口异常: 选择端口选择TCP并指定端口1433允许连接 选择所有三个配置文件(域,私人和公共)命名规则 “SQL - TCP 1433”UDP端口1434的端口例外。单击“新建规则” 再次使用以下信息创建另一个端口 例外:选择端口选择UDP并指定端口1434允许 连接选择所有三个配置文件(域,私有和公共)名称 规则“SQL - UDP 1434 sqlservr.exe的程序异常。点击 再次使用新规则并使用以下信息创建程序 例外:选择程序单击“浏览”以选择“sqlservr.exe” 这个位置:[C:\ Program Files \ Microsoft SQL Server \ MSSQL11。\ MSSQL \ Binn \ sqlservr.exe]在哪里 是SQL实例的名称。允许 连接选择所有三个配置文件(域,私有和公共)名称 规则SQL - sqlservr.exe sqlbrowser.exe的程序异常 再次单击“新建规则”并使用以下信息进行创建 另一个程序异常:选择程序单击“浏览”选择 此位置的sqlbrowser.exe:[C:\ Program Files \ Microsoft SQL 服务器\ 90 \共享\ sqlbrowser.exe]。允许连接选择全部 三个配置文件(域,私有和公共)命名规则SQL - sqlbrowser.exe
来源: http://blog.citrix24.com/configure-sql-express-to-accept-remote-connections/
答案 5 :(得分:0)
任何有此错误的人,尤其是在Azure上,都会尝试将“tcp:”添加到应用程序中连接字符串中的db-server-name。这会强制sql客户端使用tcp与db通信。我假设默认情况下连接是UDP,并且可能存在间歇性连接问题