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

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

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‘

时间: 2024-08-24 17:01:57

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

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

5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 5.集群环境下SQL Server资源无法保持在线 目录 5.启动SQL Server服务和数据库... 1 5.1 SQL Server服务启动步骤... 1 5.1.1 从注册表中读取SQL Server启动信息... 1 5.1.2 检查硬件,配置内存和CPU.. 2 5.1.3 数据库启动.

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

3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移. AlwaysOn关键特性: 一.类似集群的特性 1.多个数据库可以一起迁移 2.提供一个虚拟服务器名,这个虚拟服务器名始终是当前的primary. 3.可以有自动切换,手动切换和强制切换 4.一个primary,最多4个secondary(sql server 2014增加到了8个) 5.Dashborad可以监视alwayson运行状况

SQL Server 2012 AlwaysOn集群配置指南

1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows Server FailOver Cluster),通过在同一个WSFC的不同Node上,安装独立的SQL Server实例,定义AlwaysOn Group,一个数据库最多可以部署4个镜像.当热备机出现故障时,可以手工或自动实现故障转移,交换主.辅数据库的角色. AlwaysOn的亮点在于镜像可读

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

什么是looksalive check和is alive check SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案.在集群运行过程中,windows集群服务定期检测节点的资源健康状态,如果发生了故障,会根据预先定义的故障转移策略把SQL Server服务从故障节点切换到可用节点上,从而实现SQL Server的高可用. 而looksalive和isalive就是windows集群服务定期检测节点的资源健康状况的两个方法,它们存在于 resource dl

如何连接并存取 SQL Server 2012 Express LocalDB

本文将介绍如何连接并存取 SQL Server 2012 Express LocalDB. 在上一篇笔者介绍如何利用 SqlLocalDB 公用程序来管理 LocalDB 的执行个体,本文将继续介绍如何在 LocalDB 的执行个体上建立数据库,以及您的应用程序如何和 LocalDB 做整合. LocalDB 对于开发人员最大的好处就是方便使用,您不需要管理执行个体的各种设定(例如验证模式.通讯协定.服务启动账户等),就可以用[(localdb)执行个体名称]作为服务器名称,利用 SQL Ser

SQL Server 2012 FileTables 简介

本文将介绍有关 SQL Server 2012 FileTables. 大家都知道像是 SQL Server 这类的关联式数据库擅长处理大量结构化数据,对于文件或目录这类型的非结构化数据的管理及查询,相对而言比较难以处理. 以一般网站应用程序开发为例,常常会需要提供使用者透过浏览器上传文件的功能,应用程序要如何记录这些文件的相关资讯,大致上都是采用这两种方法,一是只在 DBMS 中纪录文件名称.大小.类型等资讯,实际文件还是存放在文件系统当中,二是把上传的文件转成二进制后保存到 DBMS 中.

SQL Server 2012笔记分享-6:理解内存管理

内存管理 – SQL Server 2005/2008/2008r2 SQL Server 2012以前的版本(SQL 2005/2008/2008R2),有single page allocator 和multi page allocator.也就是说,如果申请的内存是8k以内的,就会有单页分配器分配,而大于8kb的内存请求,使用multi page 分配器来管理.如图所示. 使用select * from sys.dm_os_memory_clerks查询memory clerk,会发现si

SQL Server 2012 LocalDB 管理之旅(转)

转:http://www.csdn.net/article/2012-03-30/313753 伴随着SQL Server 2012的发布,SQL Server LocalDB跃入我们的眼帘.SQL Server LocalDB是一个轻量级的.易于使用的数据库. SQL Server LocalDB能够最大限度地节省您的数据库管理精力,以便开发人员可以专注于开发数据库应用. 使用SqlLocalDB命令行管理LocalDB 为了方便管理,LocalDB提供了一个基于命令行的数据库管理工具SqlL

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集 XML 介绍 <CustomersOrders> <Customer custid="1" companyname="Customer NRZBB"> <Order orderid="10692" orderdate="2007-10-03T00:00:00&