到这里就无解了,从来没见过这样的情况。

6.连接的建立和问题排查

会话的建立分成2个部分:

1.连接,即找到这个实例

2.认证,告诉sql
server谁要连接

目录

6.连接的建立和问题排查…
1

6.1协议选择和别名…
1

6.1.1 服务器网络配置…
1

6.1.2 SQL Server
Browser的作用…
1

6.1.3 客户端网络配置…
2

6.1.4 客户端网络连接选择机制…
2

6.2 连接失败检测步骤——命名管道…
2

6.3连接失败检测步骤——TCP/IP.
2

6.3.1 SQL Server监听TCP/IP端口…
2

6.3.2 客户端TCP/IP协议配置…
2

6.3.3 TCP/IP连接keepalive机制…
3

6.3.4 配置SQL Server的keepalive.
3

6.3.5 配置客户端的keepalive.
3

6.3.6 TCP/IP连接问题的解决步骤…
3

6.4一般性网络错误…
4

6.5 利用Ring Buffer排查连接问题…
4

 

 

  该错误产生的原因是由于SQL Server使用了”仅
Windows”的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa
)进行连接.解决方法如下所示:

注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装

  1、SQL Server名称或IP地址拼写有误
  2、服务器端网络配置有误
  3、客户端网络配置有误

背景:

6.1协议选择和别名

常用协议有3种:

1.Shard Memory:本地访问会使用的,一般用不到

2.TCP/IP

3.Named Pipes:命名管道不是基于网络协议的,而是基于Server Message Block套件的一种协议,使用IPC$共享来无缝和透明的传输数据和用户认证上下文,在访问IPC$共享的时候先要通过Windows认证,这也是命名管道的好处之一。

  通过以上几个方面的检查,基本上可以排除第一种错误.

如果ping <服务器IP地址> 成功而,ping <服务器名称> 失败
则说明名字解析有问题,这时候要检查 DNS 服务是否正常.
有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,
具体的方法是:

  如果ping <服务器IP地址> 成功而,ping <服务器名称>
失败,则说明名字解析有问题,这时候要检查 DNS 服务是否正常。

排查:

6.3.6 TCP/IP连接问题的解决步骤

解决问题思路:

1.验证SQL
Server是否监听端口,可以查看错误日志

2.验证SQL
Server监听的端口和配置的值是否一致

3.检查网络是否正常

4.telnet查看是否可以连接到某个端口

5.检查登录用户权限

  连接超时改为0

查看sqlserver的端口号

 

  1、先保证ping通
  2、在dos下写入telnet ip 1433不会报错
  3、用ip连如企业管理器:
 
 企业管理器>右键SQlserver组>新建sqlserver注册>下一步>写入远程实例名(IP,机器名)>下一
步>选Sqlserver登陆>下一步>写入登陆名与密码(sa,pass)>下一步>下一步>完成
  4、如果还不行:
  sqlserver服务器>开始菜单>SQLserver>服务器网络实用工具>启用
WinSock代理>代理地址:(sqlserver服务器IP)>代理端口>1433>OK了
  5、如果还不行:
  sqlserver客户端>开始菜单>SQLserver>客户端网络实用工具>别名>添加>写入别名如”大力”>”网络库”选tcp/ip>服务器名称写入远程ip或实例名>OK了

  1.因为本地登录正常,那么查看1433端口是否监听。

6.3.6.4 访问防火墙后的SQL Server

  1.点击”开始” “运行”,输入regedit,回车进入注册表编辑器
  2.依次展开注册表项,浏览到以下注册表键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
\MSSQLServer]
  3.在屏幕右方找到名称”LoginMode”,双击编辑双字节值
  4.将原值从1改为2,点击”确定”
  5.关闭注册表编辑器
  6.重新启动SQL Server服务.

要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因.

  如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,不过是由于连接的时间大于允许的时间而导致出错。

  2.远程 telnet 1433 端口是不是通的。

6.3.6.3 检查连接使用的协议

SELECT*FROMsys.dm_exec_connections

  1.在服务器端使用企业管理器,并且选择”使用 Windows 身份验证”连接上 SQL
Server
  2.展开”SQL Server组”,鼠标右键点击SQL
Server服务器的名称,选择”属性”,再选择”安全性”选项卡
  3.在”身份验证”下,选择”SQL Server和 Windows “.
  4.重新启动SQL Server服务.

SQL补丁下载:
全部补丁的位置

  这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多。

  对与无法连接服务器的,一般的排查手段,也是最常用的手段。

6.1.2 SQL Server Browser的作用

对于命名实例,每次启动绑定的端口不一样。所以SQL Server开发了一套SQL
Server解析协议(SSRP)用来监听UDP1434端口。当一个客户端要访问这台服务器上的SQL Server实例,都会先询问UDP1434端口,然后由SSRP协议告诉客户端本台服务器上所安装的SQL Server实例的端口号及命名管道。

SQL Server Browser最小权限如下:

1.拒绝通过网络访问该计算机

2.拒绝本地登录

3.拒绝以批处理作业登录

4.拒绝通过“终端服务”登录

5.作为服务登录

6.读写与网络通信相关的SQL Server注册项

SQL Server Browser读取注册表信息,识别计算机上的所有实例,并注明他们使用的端口和命名管道。

  要解决这样的错误,可以修改客户端的连接超时设置.
  默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4
秒,而查询分析器是 15
秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因).

通过存储过程查看

  闲话莫提,我们直接讲解如何查看端口号。需要提的是在我的机器上安装了sqlserver2008和sqlserver2012两个版本的数据库。我们首先打开sqlserver
management
studio(简称SSMS)连接sqlserver2008的数据库实例,然后执行如下存储过程:

--查询端口号
exec sys.sp_readerrorlog 0, 1, 'listening'

查询出来的结果如下图所示:

威尼斯城真人赌钱网站 1

从上图我们可以看出sqlserver2008的端口号是5419。

接下来关闭SSMS,再从重新打开,接着连接sqlserver2012。继续执行上述的存储过程,查询结果如下图所示:

威尼斯城真人赌钱网站 2

上图说明sqlserver2012的端口号是5413。

  1、在服务器端使用企业管理器,并且选择”使用 Windows 身份验证”连接上
SQL Server
  2、展开”SQL Server组”,鼠标右键点击SQL
Server服务器的名称,选择”属性”,再选择”安全性”选项卡
  3、在”身份验证”下,选择”SQL Server和 Windows “。
  4、重新启动SQL Server服务。

  用户XX登录失败(MicroSoft SQL Server,错误18456)

6.3.6.1 监听多个端口

多个端口的监听,可以在设置端口是用逗号隔开

威尼斯城真人赌钱网站 3

  点击:程序 Microsoft SQL Server 客户端网络使用工具

一.”SQL Server 不存在或访问被拒绝”

  有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,具体的方法是:

报错:

6.4一般性网络错误

  其次,使用 telnet 命令检查SQL Server服务器工作状态
telnet <服务器IP地址> 1433

通过sp_readerrorlog来查看sql server监听的协议以及端口(补充:2012-9-10)

在SSMS中输入sp_readerrorlog命令来查看sql
server信息,回到到如下类似的监听信息:

威尼斯城真人赌钱网站 4

--tcp协议
Server is listening on [ 'any' <ipv6> 1500].
Server is listening on [ 'any' <ipv4> 1500].
Server is listening on [ 'any' <ipv6> 1433].
Server is listening on [ 'any' <ipv4> 1433].
Server is listening on [ ::1 <ipv6> 1434].
Server is listening on [ 127.0.0.1 <ipv4> 1434].
--named pipe协议无法关闭,即使关闭以后也会有local connection provider
Server local connection provider is ready to accept connection on [ \\.\pipe\sql\query ].
--share memory
Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\MSSQLSERVER ].

威尼斯城真人赌钱网站 5

这是在关闭named pipe的情况下,如果开启named pipe的话,那么会是如下类型:

--开启named pipe
Server named pipe provider is ready to accept connection on [ \\.\pipe\sql\query ].

在sql server是无法关闭本地named pipe协议的

  接下来我们要到客户端检查客户端的网络配置
  我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,
  所不同的是这次是在客户端来运行这个工具。

相关文章