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

简介: 6.连接的建立和问题排查 会话的建立分成2个部分: 1.连接,即找到这个实例 2.认证,告诉sql server谁要连接 目录 6.连接的建立和问题排查... 1 6.1协议选择和别名.

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 Serverkeepalive. 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 ClientSQL Server带的安装了才有,随SQL Server版本变化而变化。在SQL Server配置管理器也可以对Native Client进行配置。

3.SQLClient,客户端应用程序使用的是托管编程代码,目前一般使用ADO.NET来连接SQL ServerSQLClient没有固定配置工具,是按照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连接是长连接,当客户端连接到服务器的时候指定了keepaliveintervalkeepalivetime参数,在连接空闲时间超过keepalivetimetcp就会以keepaliveinterval为间隔自动发出keepalive包测试连接是否存活。如果keepalive检测次数超过注册表的TcpMaxDataRetransmissions的定义,对方还是没有反应,就会关闭这个有问题的连接。

Sql serverkeepalivetime30skeepaliveinterval1swindows tcp配置默认TcpMaxDataRetransmissions5s

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

6.3.4 配置SQL Serverkeepalive

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

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机制,keepalivetime30skeepaliveinterval1s。其中只有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 Buffer3种记录:ConnectionCloseErrorLoginTimers

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 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
1042 3
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
852 0
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
SQL 存储 关系型数据库
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
本文介绍了SQL的基础语言类型(DDL、DML、DCL、DQL),并详细说明了如何创建用户和表格,最后推荐了几款适合初学者的免费SQL实践平台。
851 3
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
|
SQL 数据挖掘 数据库
SQL自学笔记(2):如何用SQL做简单的检索
本文深入介绍了SQL的基本语法,包括数据查询、过滤、排序、分组及表连接等操作,并通过实际案例展示了SQL在用户研究中的应用,如用户行为分析、用户细分、用户留存分析及满意度调查数据分析。
415 0
SQL自学笔记(2):如何用SQL做简单的检索
|
SQL 数据挖掘 关系型数据库
SQL自学笔记(1):什么是SQL?有什么用?
本文为用户研究新手介绍SQL(结构化查询语言),解释了SQL的基本概念、入门方法及在用户研究中的应用通过实际案例说明,如用户行为分析、用户细分和满意度调查数据分析,展示了SQL在用户研究中的重要作用。
4323 0
SQL自学笔记(1):什么是SQL?有什么用?
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
590 5
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
1033 2
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析