欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

等保测评:SQLServer操作超时

来源:本站整理 作者:佚名 时间:2019-08-09 TAG: 我要投稿

一、说明
本文说的是等级保护1.0中SQLServer数据库操作超时的内容,实际在SQLServer中有很多种超时选项,很容易将其混为一谈,本文将尽力将之说清楚。
二、操作超时的意义
操作超时在sqlserver数据库中可能包含好几个意思:
2.1. 客户端连接数据库时的连接超时时间
就是指在客户端连接数据库时,如果在限定时间内数据库没有回应,则返回失败的结果,其中的时间。
值得注意的是,此项是由客户端来指定而非数据库,更具体的来说,是在数据库连接字符串中,以C#为例子:
server=.;database=myDB;User ID=sa;Password=password;Connect Timeout=500
其中的Connect Timeout即为连接超时时间,单位为秒。也就是说,连接超时时间不仅是由客户端指定,而且还具体到某次连接当中,很简单,如果客户端下次发来的连接字符串把Connect Timeout的值改了,自然这一次的连接超时时间也就改了。所以,这里和主机的超时是有些不一样的,主机的超时是在主机中进行设置(无论linux还是windows),由主机决定而不是连接主机的终端决定。
通常我们用SQL Server Management Studio来管理sqlserver数据库,其本质就是一个可以连接数据库的软件而已。
它的原理大概应该是这样:
让用户选择好验证方式(windows验证还是sqlserver验证),输入用户名和口令(如果是sqlserver验证的话),然后你自己通过用户的操作生成相应的连接字符串,连接上数据库,并将此连接字符串进行保存。
成功后保存用户的输入(如用户名和口令)在代码中,如用户进行其他查询(通过点击或者输入sql语句),再使用先前保存的连接字符串,再和数据库连接一次,并执行相应的命令。因为不大可能从头到尾就用一个连接来搞定,所以应该是每执行一次操作就连接一次,只不过除第一次连接(登陆)时需要用户进行输入用户名和口令,其余的连接用户就不需要再次输入了。
这个过程我相信只要是编写过和数据库有交互的软件的人,都能看明白的。
好,那么SQL Server Management Studio有没有地方可以设置连接超时时间呢?
有,就是在登录界面中,而且还能直接手写连接字符串:


2.2. 客户端执行某项sql语句的超时时间
连接数据库后,对数据库进行某项操作(查询、修改、删除、插入),如果在限定时间内没有返回结果,则此次操作失败并中断连接,其中的时间。 和连接超时差不多,也是由连接数据库的客户端进行指定,以C#为例子的话,是在代码中对SqlCommand对象的CommandTimeout属性进行设置。
而在SQL Server Management Studio中有两个地方可以进行设置:
登陆界面中 注意,这个是全局设置,估计会用一个全局变量将执行超时值存储起来,每次在SQL Server Management Studio中执行sql语句时,会使用该全局变量进行设置。

每次新建查询后的查询选项
点击新建查询后,会新建一个查询,该查询的执行超时值会使用全局变量的执行超时值进行初始化,当然,你也可以自己再进行改动,改动后仅对这个查询有效。



2.3. 数据库连接远程数据库的超时时间
这里说的是remote login timeout,也就是初级教程中让我们查的值:

这个值是什么意思呢?
我们对sqlserver数据库执行sql语句如查询语句,往往是对一个数据源(数据库)进行查询,而当我们涉及到另一个远程数据源(数据库)的时候,就需要对远程数据源进行连接(登陆),而我们可以通过链接服务器实现这个功能。
通过链接服务器,SQL Server 数据库引擎 和 Azure SQL 数据库托管实例可从远程数据源中读取数据,并针对 SQL Server 实例之外的 OLE DB 数据源等远程数据库服务器执行命令。
在msdn中,remote login timeout的说明如下:
remote login timeout 选项指定从登录远程服务器失败返回前等待的秒数。 例如,如果您尝试登录到一个远程服务器而该服务器已关闭, remote login timeout 帮助确保您在计算机停止登录尝试前不必无限期地等待下去。 此选项的默认值为 10 秒。 如果该值为 0,则允许无限期等待。
比如类似语句就会使用链接服务器:
SELECT * FROM [WIN-CGQ89NM7L8J,15478].master.sys.objects
而remote login timeout的意思是指你现在连接的这个数据库,它去连接远程数据源时,相应的连接超时时间。 也就是说,这里并不是对SQL Server Management Studio这个客户端软件进行设置,而是对你现在连接的这个sqlserver数据库本身进行设置。
所以我们要进行区分,同样是在SQL Server Management Studio上进行一些设置,有些是对这个软件本身的一些项进行设置(如连接超时值等),而有些则是对你连接的这个数据库的一些项进行设置(如remote login timeout)。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载