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

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

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

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

目录

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

6.1协议选择和别名

6.1.1 服务器网络配置

6.1.2 SQL Server Browser的作用

6.1.3 客户端网络配置

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

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

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

6.3.1 SQL Server监听TCP/IP端口

6.3.2 客户端TCP/IP协议配置

6.3.3 TCP/IP连接keepalive机制

6.3.4 配置SQL Server的keepalive

6.3.5 配置客户端的keepalive

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

6.4一般性网络错误

6.5 利用Ring Buffer排查连接问题

6.1协议选择和别名

常用协议有3种:

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

2.TCP/IP

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

6.1.1 服务器网络配置

SQL Server的配置管理器可以设置各个协议的开启和关闭。配置好协议之后重启服务,会在errorlog中看到服务是否正常启动。

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读取注册表信息,识别计算机上的所有实例,并注明他们使用的端口和命名管道。

6.1.3 客户端网络配置

客户端有4中驱动:

1.MDAC或者WDAC,基于windows,不需要安装,可以通过cliconfg.exe配置

2.SQL Server Native Client,SQL Server带的安装了才有,随SQL Server版本变化而变化。在SQL Server配置管理器也可以对Native Client进行配置。

3.SQLClient,客户端应用程序使用的是托管编程代码,目前一般使用ADO.NET来连接SQL Server。SQLClient没有固定配置工具,是按照Shared Memory->TCP/IP->Named Pipes顺序来连接的。

4.JDBC,用来给Java程序连接SQL Server。

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

SQL Server网络连接机制:

1.SQL Server有自己的网络协议,配置选项,决定SQL Server侦听哪些协议

2.一台服务器上可以有多个SQL Server实例,每个实例使用不同的端口和管道。SQL Server Browser通过读取注册表知道所有实例的网络配置信息。

3.客户端的数据库连接组件上可以配置候选的网络协议。

客户端开启了多个网络协议,一般最后决定使用什么协议的顺序如下:

1.连接字符串中指定协议

2.客户端别名

3.寻找相应数据驱动的LastConnect注册记录

4.通过SQL Server Browser得知端口号或者管道名称

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

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

6.3.1 SQL Server监听TCP/IP端口

SQL Server监听端口,可以为机器上的每个IP地址都设置独立的端口号(无法配置出来),也可以为所有的IP设置统一的端口号。

6.3.2 客户端TCP/IP协议配置

6.3.3 TCP/IP连接keepalive机制

客户端和服务器之间的tcp连接是长连接,当客户端连接到服务器的时候指定了keepaliveinterval和keepalivetime参数,在连接空闲时间超过keepalivetime,tcp就会以keepaliveinterval为间隔自动发出keepalive包测试连接是否存活。如果keepalive检测次数超过注册表的TcpMaxDataRetransmissions的定义,对方还是没有反应,就会关闭这个有问题的连接。

Sql server的keepalivetime为30s,keepaliveinterval为1s,windows tcp配置默认TcpMaxDataRetransmissions为5s。

服务端的管服务端的,客户端的管客户端的,但是任何一个超过阀值都会关闭连接。

6.3.4 配置SQL Server的keepalive

可以在SQL Server配置管理器中配置tcp的keepalive时间。当然也可以在注册表上修改。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER \MSSQLServer\SuperSocketNetLib\Tcp

TcpMaxDataRetransmissions也可以在注册表上修改:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters

6.3.5 配置客户端的keepalive

任何客户端都有keepalive机制,keepalivetime为30s,keepaliveinterval为1s。其中只有native client可以在SQL Server配置管理器上修改。

当然可以在注册表上修改

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

解决问题思路:

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

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

3.检查网络是否正常

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

5.检查登录用户权限

6.3.6.1 监听多个端口

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

6.3.6.2 端口绑定失败

端口绑定失败,在启动是时候会报错。

可以查看端口是否被占用

6.3.6.3 检查连接使用的协议

SELECT*FROMsys.dm_exec_connections

6.3.6.4 访问防火墙后的SQL Server

6.4一般性网络错误

6.5 利用Ring Buffer排查连接问题

Ring Buffer,可以捕捉每个由服务器发起的关闭连接记录,包含会话异常中断或者登陆失败,Ring Buffer最多1000条数据。

Connectivity Ring Buffer有3种记录:ConnectionClose,Error,LoginTimers。

Connectivity Ring Buffer可以让你在不能使用NetWork Monitor情况下解决棘手的问题。

Connectivity Ring Buffer中的LoginTimers记录了整个登陆过程所话的时间。

SELECTCAST(record ASXML) record

,CAST( record ASXML). value('(//Record/ConnectivityTraceRecord/RecordTime)[1]','datetime')  recordtime

,CAST( record ASXML). value('(//Record/ConnectivityTraceRecord/RecordType)[1]','varchar(20)')  Recordtype

FROMsys.dm_os_ring_buffers

WHERE ring_buffer_type ='RING_BUFFER_CONNECTIVITY'

SQL Server 2012实施与管理实战指南(笔记)——Ch6连接的建立和问题排查的更多相关文章

  1. SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组

    3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移. AlwaysOn关键特性: 一.类似集群 ...

  2. SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库

    5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 ...

  3. SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件

    4.数据库连接组件 访问数据库有多种不同的技术,包括ADO,ODBC,OLEDB,ADO.NET等这些都有一些共性.首先要建立连接(Connection),然后通过命令(Command)对数据库进行访 ...

  4. 《SQLSERVER2012实施与管理实战指南》前4章节笔记内容

    <SQLSERVER2012实施与管理实战指南>前4章节笔记内容 <SQLSERVER2012实施与管理实战指南>的前面4章是<SQLSERVER企业级平台管理实践> ...

  5. SQL Server 2012 AlwaysOn集群配置指南

    1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows ...

  6. SQL Server 2012故障转移的looksalive check和is alive check

    什么是looksalive check和is alive check SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案.在集群运行过程中,windows集群服务定 ...

  7. SQL server 2012 阻塞分析查询

    最近公司的数据库并发有点大,由于CPU不高.内存不高.硬盘正常.网络也正常等等,但系统还是会卡,所以就怀疑是数据库阻塞导致的,于是去查询资料,看书及经过用以下sql观查,经过几天对数据的分析找到原因并 ...

  8. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  9. 【转】SQL Server 2012 配置AlwaysOn(三)

    转载自:http://www.cnblogs.com/lyhabc/p/4682986.html 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http:/ ...

随机推荐

  1. Nhibernate的第一个实例

    第一个NhIbernate程序 1.目的: a) 链接到oracle数据库 b) 增删改 c) 基本查询.sql查询 d) 视图查询 e) 使用存储过程 f) 多表查询.级联查询 g) 级联增删改 2 ...

  2. 孙鑫MFC学习笔记10:画图/贴图

    1.SetPixel在指定点设置像素 2.虚线.点线宽度必须为1 3.CColorDialog创建颜色对话框 4.需要设置CC_RGBINIT标志才能设置颜色对话框的默认颜色 5.CC_FULLOPE ...

  3. x8086汇编实现dos清屏(clear screen)

    题目要求:x8086汇编实现dos下的清屏功能 80X25彩色字符模式显示缓冲区的结构: 在内存地址结构中,B8000H~BFFFFH共32KB的空间,为80x25彩色字符模式的显示缓冲区.向这个地址 ...

  4. python打印进度条

    import sys,time第一种方法: for i in range(50): sys.stdout.write("#") time.sleep(0.1) sys.stdout ...

  5. java多线程-同步块

    Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java 同步块用来避免竞争.本文介绍以下内容: Java 同步关键字(synchronzied) 实例方法同步 ...

  6. 基于jQuery的ajax对WebApi和OData的封装

    基于jQuery的ajax对WebApi和OData的封装 WebApi 的使用带来了一个显著的特点,对type有一定的要求.一般ajax的type无非就是两种,GET和POST.如果用JSONP来跨 ...

  7. IClient for js开发之地图的加载

    进行web开发之前首先需要安装IServer以及iClient for JavaScript的开发包.在这两中都具备的前提下进行第一步,如何调用IServer中发布的服务 调用iServer 中发布的 ...

  8. jQuery Tocify 定位导航

    Tocify是一个jQuery插件,能够动态的生成文章目录,Tocify可以随意的设置Twitter Bootstrap 或者 jQueryUI Themeroller支持的可选动画和jQuery的显 ...

  9. windows 80 端口占用

    1. cmd 2. regidit 3. 注册表 KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP'右边有一个'start'的DWORD ...

  10. add host bat

    ::Author > mdt jindahao ::Data > @echo off title 添加记录到HOST--------Powerd by LoveQishi echo. ec ...