有关SQL server connection Keep Alive的几个问题解答

1、什么是SQL server TCP连接的keep Alive?

简单说,keep alive 是SQL server在建立每一个TCP 连接的时候,指定了TCP 协议的keepaliveinterval 和keepalivetime参数。这样对每个TCP连接,如果该连接空闲时间(没有任何数据交互)超过keepalivetime,TCP协议会自动发出keepalive 包检测连接存活与否。如果keepalive 检测次数超过注册表TcpMaxDataRetransmissions定义的值而对方还是没有回应,那么TCP就认为该连接有问题而关闭它。通过这样的机制SQL server能够检测出orphaned connection等问题。

SQL&">nbsp; server 对每个TCP连接缺省指定keep alive 为30秒,keepaliveinterval为1秒。Windows TCP配置的TcpMaxDataRetransmissions缺省是5次。就是说,如果TCP连接idle了30秒,那么TCP会发送第一个keepalive检查。如果失败,那么TCP会每隔1秒重发keepalive 包,直到重发5次。如果第五次检测依然失败,则该连接就被close。所以,一个TCP连接如果出现异常问题,大概在35秒的时候就会被close。

2、在那里可以配置SQL server 的keep alive 配置?

SQL server 2000代码里面也有对TCP连接指定keep alive属性,但没有提供用户界面给用户定制修改。SQL server2005使用configuration manager可以修改keep alive值,但是不能修改keepalive interval。 Keepaliveinterval是hardcoded的1秒。

Configuration manager的界面如下:

该值保存在注册表如下位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.?\MSSQLServer\SuperSocketNetLib\Tcp

注意SQL server的820.html">Native client也有类似配置,不要和server side 的TCP配置搞混了:

Native client的 keep alive 配置保存在如下位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp

时间: 2024-08-29 07:01:08

有关SQL server connection Keep Alive的几个问题解答的相关文章

有关SQL server connection Keep Alive的FAQ

这个是SQL Server http://www.aliyun.com/zixun/aggregation/19458.html">Keep Alive FAQ文章的最后一篇. 问题1:为什么我在客户端设置了KeepAlive值,但是我使用SQL server management studio 测试的时候,该值总是不起作用? [答]目前市场上主流的数据库访问技术有ODBC,OLEDB,SQL native client 和 SQLclient.其中SQLclient是.NET里面使用的托

ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

原文:ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity Framework将预设值使用的LocalDB. 在本节中,我们将显式地在Web.config文件中,添加应用程序的连接字符串(connection string)

SQL Server事务遭遇网络异常时的处理机制浅析

SQL Server数据库中,如果应用程序正在执行一个事务的时候突然遭遇了网络异常,例如网络掉包,网络中断等,那么这个事务会怎么样? SQL Server数据库是通过什么机制来判断处理呢? 估计很多人跟我一样都有不少疑问, 我们下面构造一个测试实验来测试验证一下.如下所示:     步骤1:在客户端连使用SSMS工具连接到测试数据库,执行下面脚本,显性事务既不提交也不回滚.模拟事务正在执行当中.   USE AdventureWorks2012; GO SELECT@@SPID;     BEG

防止ADO连接SQL Server时的隐式连接

ado|server 防止ADO连接SQL Server时的隐式连接Report Date:   2002/9 Prepared by:     郑            昀 Article last modified on 2002-9 The information in this article applies to: ü         Microsoft SQL Server 2000,7.0 ü         Microsoft ADO 2.5问题陈述:数据库服务器:Microso

如何在 Active Server Page 中访问 SQL Server

active|server|访问 SQL Server适用于 概要本文介绍了如何使用"ActiveX 数据对象"(ADO) 在 ASP 脚本中建立到 SQL Server 的连接,同时利用 ODBC 3.0 的连接池功能. 更多信息连接池启用 ODBC 连接池. 有关连接池的其他信息以及有关如何启用连接池功能的说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 164221 如何在 ODBC 应用程序中启用连接池 ODBC DSN使用"ODBC 管理

SQL Server的sa密码丢失解决

在网上看了很多如何修改SQLServer2005的密码的方法.大多数都是转了同一个帖子: 用windows权限进入,然后修改当前实例属性中的安全项,然后重新启动就可以修改了,但是操作手顺与我的SQLServer貌似不同.大概是SP1之前可以这么做吧. 首先用windows账户登录,然后在master表里执行: <div codepanel"=""> EXEC sp_password NULL, '你的新密码', 'sa'   ------------以下为网络搜集

《Tableau数据可视化实战》——1.5节连接SQL Server数据库

1.5 连接SQL Server数据库 尽管Tableau能很容易地连接Access.Excel以及其他平面文件,但数据经常是存储在服务器的关系型数据库中,比如SQL Server或者Oracle.Tableau也提供了一些其他数据存储的连接,本节将讨论如何使用Tableau连接Microsoft SQL Server. 准备工作 当你尝试从服务器访问数据时,安全角色.服务器连接.身份认证.端口.防火墙以及其他因素均可能产生问题,解决这些问题的方法超出了本书的范围,但你需要确定,你可以从已安装T

理解SQL Server 2000的信任连接(Trusted connection)

connection|server 我在用OLEDB方式连接SQL Server时, 用到连接字: "provider=SQLOLEDB.1;data source=localhost;initial catalog=WroxBooks; Trusted_Connection=yes; User ID=sa;Password=;"调用后一直无法正常连接. ASP.NET错误描述:* Error while accessing data.用户 'CXY\ASPNET' 登录失败. ASP

SQL Server 2012 The report server cannot open a connection to the report server database

案例环境:        操作系统版本:    Windows Server 2012 R2 Standard        数据库版本  :    SQL SERVER 2012 SP2 案例介绍:         今天进入一台新安装的SQL Server服务器的Reporting Service管理界面时,出现如下错误信息 The report server cannot open a connection to the report server database. A connectio