SQL Server未返回响应。连接已关闭。

Winserver2008 环境下SQLServer2008访问SQLServer2016
jdk:1.8
报错:SQL Server未返回响应。连接已关闭。(但是未影响使用)
在这里插入图片描述
解决办法:
修改jre配置文件,C:\Mytijian\jdk\jre\lib\security\java.security,注释掉3DES_EDE_CBC
原内容:

jdk.tls.legacyAlgorithms= \
        K_NULL, C_NULL, M_NULL, \
        DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
        DH_RSA_EXPORT, RSA_EXPORT, \
        DH_anon, ECDH_anon, \
        RC4_128, RC4_40, DES_CBC, DES40_CBC, \
        3DES_EDE_CBC

修改后:

jdk.tls.legacyAlgorithms= \
        K_NULL, C_NULL, M_NULL, \
        DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
        DH_RSA_EXPORT, RSA_EXPORT, \
        DH_anon, ECDH_anon, \
        RC4_128, RC4_40, DES_CBC, DES40_CBC, \
        # 3DES_EDE_CBC

参考文章链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
奇虎360公司开源的Atlas是优秀的数据库中间件,美团点评DBA团队针对公司内部需求,在其上做了很多改进工作,形成了新的高可靠、高可用企业级数据库中间件DBProxy,已在公司内部生产环境广泛使用,较为成熟、稳定。 DBProxy的优点 支持多语言MySQL客户端 读写分离 负载均衡 Slave故障感知与摘除(Master需要MHA等其他联动) 后端连接池 自定义SQL拦截与过滤 流量分组与控制 丰富的监控状态 支持分表(分库版本正在内测中) Client IP限制 DBProxy对Atlas的改进 新增功能点 新增参数 backend-max-thread-running用于指定每个MySQL后台的最大thread running数 thread-running-sleep-delay用于指定在thread running数超过backend-max-thread-running时,客户端连接等待的时间 添加到黑名单中需要满足两个条件:SQL执行的时间和频率 提供了查看、修改、添加、删除黑名单的功能 黑名单管理提供了将黑名单保存到文件以及从文件中Load到内存中的功能 在手动添加黑名单时,只需要将用户的SQL语句输入,在内部自动转化成过滤条件,手动添加时是否生效由参数 manual-filter-flag 来控制,OFF:不生效,ON:立即生效 手动添加与自动添加两种情况下的过滤条件是否生效是分别由不同参数控制,这个要区分清楚。另外,也可以使用 admin 的命令来设置是否开启/关闭某个过滤条件 SQL执行的时间 由参数 query-filter-time-threshold 来指定,如果SQL执行时间超过此值,则满足条件 SQL执行频率 由参数 query-filter-frequent-threshold 来指定,如果SQL执行频率超过此值,则满足条件 频率就是在时间窗口内执行的次数。时间窗口则是由频率阈值和最小执行次数来计算出来的,当时间窗口小于60s时,扩展到60s 参数 access-num-per-time-window 用来指定在时间窗口内的最小执行次数,添加此参数是考虑到执行时间长的SQL在计算频率时同时参考其执行的次数,只有执行一定次数时才去计算其频率。当执行时间与执行频率都满足时条件时,会自动将查询作为过滤项放到黑名单中,加入到黑名单中是否生效由参数 auto-filter-flag 来控制,OFF:不生效,ON:立即生效 黑名单的管理 从库流量配置 指定查询发送到某个从库 参数动态设置(完善show proxy status/variables) 支持save config,动态增加、删除分表 响应时间percentile统计 统计最近时间段DBProxy的响应时间 kill session 支持DBProxy的admin接口kill session操作 backend平滑上下线 支持平滑的backend上下线 DBProxy非root用户启动 使用非root用户启动 admin账号的安全限制 admin账号密码的动态修改及host限制 增加异步刷日志的功能 增加日志线程、异步刷日志,提高响应时间 支持DBProxy平滑重启功能 支持SQL过滤的黑名单功能 支持对于MySQL后台的thread running限制功能 该功能通过在DBProxy内限制每个后台MySQL的并发查询,来控制对应MySQL的thread running数 当发向某个MySQL后台的的并发查询超过某个阈值时,会进行超时等待,直到有可用的连接,其中阈值与超时等待的时间都已经参数化,可以动态配置 set backend offline不再显示节点状态 支持set transaction isolation level 支持use db 支持set option语句 支持set session级系统变量 支持建立连接时指定连接属性 改进连接池的连接管理,增加超时释放机制。当连接池中的空闲连接闲置超过一定时
远程连接sql server 2000服务器的解决方案 一.看ping 服务器IP能否ping通。 这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。 二.在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。 如telnet 202.114.100.100 1433 通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。 如果这一步有问题,应该检查以下选项。 1 检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。 2 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。 3 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。 事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。 4 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。 5 检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入 netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。 如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜你,你马上可以开始在企业管理器或查询分析器连接了。 三.检查客户端设置 程序->Microsoft SQL Server -> 客户端网络使用工具。像在服务器网络实用工具里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。 四.在企业管理器里或查询那分析器连接测试 企业管理器->右键SQlserver组->新建sqlserver注册->下一步->写入远程IP->下一步->选Sqlserver登陆->下一步->写入登陆名与密码(sa,password)->下一步->下一步->完成 查询分析器->文件->连接->写入远程IP->写入登录名和密码(sa,password)->确定 通常建议在查询分析器里做,因为默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是4秒,而查询分析器是15秒。 修改默认连接超时的方法: 企业管理器->工具->选项->在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡->连接设置->在 登录超时(秒) 后面的框里输入一个较大的数字 查询分析器->工具->选项->连接->在 登录超时(秒) 后面的框里输入一个较大的数字 通常就可以连通了,如果提示错误,则进入下一步。 五.错误产生的原因通常是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示:  1 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接SQL Server。   2 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡。   3 在"身份验证"下,选择"SQL Server和 Windows "。   4 重新启动SQL Server服务。(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。 附注:在连接本地服务器时,通常使用的是命名管道协议(在服务器网络实用工具里可以看到启用的协议有这个),默认端口是445,因此在本地能连通是不能说明什么问题的,连接远程服务器是完全不同的协议) SQL Server连接中的四个最常见错误 ---------------------------------- 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= ping 服务器IP地址/服务器名称> 如果 ping 服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等. 还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对 ping,telnet 等的响应 因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口. 如果ping 服务器IP地址> 成功而,ping 服务器名称> 失败 则说明名字解析有问题,这时候要检查 DNS 服务是否正常. 有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析, 具体的方法是: 1.使用记事本打开HOSTS文件(一般情况下位于C:\WINNT\system32\drivers\etc). 添加一条IP地址与服务器名称的对应记录,如: 172.168.10.24 myserver 2.或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明. ============= 其次,使用 telnet 命令检查SQL Server服务器工作状态 ============= telnet 服务器IP地址> 1433 如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接 如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务, 也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听. =============接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道.是否启用了 TCP/IP 协议等等 ============= 可以利用 SQL Server 自带的服务器网络使用工具来进行检查. 点击:程序 -- Microsoft SQL Server -- 服务器网络使用工具 打开该工具后,在"常规"中可以看到服务器启用了哪些协议. 一般而言,我们启用命名管道以及 TCP/IP 协议. 点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置 一般而言,我们使用 SQL Server 默认的1433端口.如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接. ============= 接下来我们要到客户端检查客户端的网络配置 ============= 我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查, 所不同的是这次是在客户端来运行这个工具. 点击:程序 -- Microsoft SQL Server -- 客户端网络使用工具 打开该工具后,在"常规"项中,可以看到客户端启用了哪些协议. 一般而言,我们同样需要启用命名管道以及 TCP/IP 协议. 点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致. 单击"别名"选项卡,还可以为服务器配置别名.服务器的别名是用来连接的名称, 连接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设置与使用HOSTS文件有相似之处. 通过以上几个方面的检查,基本上可以排除第一种错误. ----------------------------------------------------------------------------- 二."无法连接到服务器,用户xxx登陆失败" 该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式, 因此用户无法使用SQL Server的登录帐户(如 sa )进行连接.解决方法如下所示: 1.在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接SQL Server 操作步骤: 在企业管理器中 --右键你的服务器实例(就是那个有绿色图标的) --编辑SQL Server注册属性 --选择"使用windows身份验证" --选择"使用SQL Server身份验证" --登录名输入:sa,密码输入sa的密码 --确定 2.设置允许SQL Server身份登录 操作步骤: 在企业管理器中 --展开"SQL Server组",鼠标右键点击SQL Server服务器的名称 --选择"属性" --再选择"安全性"选项卡 --在"身份验证"下,选择"SQL Server和 Windows ". --确定,并重新启动SQL Server服务. 在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败, 那就通过修改注册表来解决此问题: 1.点击"开始"-"运行",输入regedit,回车进入注册表编辑器 2.依次展开注册表项,浏览到以下注册表键: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer] 3.在屏幕右方找到名称"LoginMode",双击编辑双字节值 4.将原值从1改为2,点击"确定" 5.关闭注册表编辑器 6.重新启动SQL Server服务. 此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册, 但是仍然无法使用Windows身份验证模式来连接SQL Server. 这是因为在 SQL Server 中有两个缺省的登录帐户: BUILTIN\Administrators 机器名>\Administrator 被删除. 要恢复这两个帐户,可以使用以下的方法: 1.打开企业管理器,展开服务器组,然后展开服务器 2.展开"安全性",右击"登录",然后单击"新建登录" 3.在"名称"框中,输入 BUILTIN\Administrators 4.在"服务器角色"选项卡中,选择"System Administrators" 5.点击"确定"退出 6.使用同样方法添加 机器名>\Administrator 登录. 说明: 以下注册表键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode 的值决定了SQL Server将采取何种身份验证模式. 1.表示使用"Windows 身份验证"模式 2.表示使用混合模式(Windows 身份验证和 SQL Server 身份验证). ----------------------------------------------------------------------------- 三.提示连接超时 如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接, 不过是由于连接的时间大于允许的时间而导致出错. 这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器, 并且是慢速连接时,有可能会导致以上的超时错误.有些情况下,由于局域网的网络问题,也会导致这样的错误. 要解决这样的错误,可以修改客户端的连接超时设置. 默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒, 而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因). 具体步骤为: 企业管理器中的设置: 1.在企业管理器中,选择菜单上的"工具",再选择"选项" 2.在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡 3.在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 20. 查询分析器中的设置: 工具 -- 选项 -- 连接 -- 将登录超时设置为一个较大的数字 --------------------------------------------------------------------------------- 四.大部分机都用Tcp/ip才能成功,有次我发现用Named Pipes才可以? 这是因为在WINDOWS 2000以后的操作系统中,MS为解决SQL SERVER的安全问题将TCP/IP配置 为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE 的顺序。 你也可以在: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib] "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00 看到默认的协议。 2.怎么在程序中更改Named Pipes , Tcp/ip ,其sql语句怎么写? 你可以在上面提到的注册表的位置修改: CLIENT端: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib] "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00 SERVER端: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
如果你的sql server 2000远程连接时,无法打开1433端口,请按照以下顺序进行检查和修正: 1.如果你是win2003,那么一定要安装sql的补丁sp3a 检查你的SQL有没有打补丁,没有的话要打上补丁,检查的方法是在查询分析器中运行: select @@version 如果出来的版本号是8.00.760以下,则表明你安装sp3的补丁,要装上. SQL补丁下载: 全部补丁的位置 http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9032f608-160a-4537-a2b6-4cb265b80766 注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装 2.SQL Server连接中的四个最常见错误: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= ping 如果 ping 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等. 还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对 ping,telnet 等的响应 因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口. 如果ping 成功而,ping 失败 则说明名字解析有问题,这时候要检查 DNS 服务是否正常. 有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析, 具体的方法是: 1.使用记事本打开HOSTS文件(一般情况下位于C:\WINNT\system32\drivers\etc). 添加一条IP地址与服务器名称的对应记录,如: 172.168.10.24 myserver 2.或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明. ============= 其次,使用 telnet 命令检查SQL Server服务器工作状态 ============= telnet 1433 如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接 如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务, 也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值