欢迎来到天天文库
浏览记录
ID:20250261
大小:52.00 KB
页数:4页
时间:2018-10-09
《巧用set选项设置sql server客户端配置--》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、巧用SET选项设置SQLServer客户端配置>> 通常情况下,利用客户端连接到SQLServer数据库的时候,其默认是采用服务器的相关配置来初始化客户端的连接。但是在某些情况下,数据库管理员希望客户端能够管理自己的设置。而且往往这些客户端的设置跟服务器的设置不一样,甚至相反。此时客户端要能够在不修改服务器设置的情况下,连接到数据库服务器中。 要实现类似的功能,就需要用到SQLServer数据库中的SET选项。如要实现上述的需求,数据库管理员可以把SETANSI_DEFAULTSON,然后再通过SQL_COPT_SS_PRESER
2、VE_CURSORS来设置客户端的配置。如此的话,就可以实现客户端与服务器配置的不同,提高客户端配置的灵活性。 不过需要注意的是,使用这些SET选项会导致客户端与服务器配置的不同,即一些连接参数、运行环境等等可能会出现混乱。为此在使用SET选项时还必须考虑这个一致性的问题。也就是说,使用SET选项时要注意如下细节, 一、SET选项的生效时间。 利用SET选项来设置相关的运行参数与环境的时候,要注意其生效时间。这与服务器默认参数不同。默认参数其是始终生效的,除非后来数据库管理员改变了其设置。但是使用SET选项来设置相关参数时,其生
3、效时间就尤其特殊性。一般来说,SET选项可以分为分析时SET选项与执行时SET选项。随着他们的分类不同,这个选项的生效时间也是不同的。如分析时选项在分析期间分析出文本中的选项时生效,而不管是否受流语句的控制。而执行选型则在指定这些选项的代码执行期间生效。如在一个批处理程序中,可以设置一个SET选项。如果在执行这个SET语句之前,批处理程序已经因为某些原因执行失败,则这个选项就不会生效,即数据库系统没有设置这个选项。如果在执行SET语句后执行失败,则这这个选项就已经生效了。 所以说如果SET选项跟一些批处理程序一起使用时,就需要特别注
4、意这个SET选项的位置。因为这个SET选型是否生效直接跟批处理程序中其他语句的执行情况相关。如现在一个批处理程序中有8条语句,而SET选型就是其中的一条如在第五条。如果在执行这个批处理程序的时候,在第三条语句的时候卡住了,那么这个第五条的SET选项语句就根本不起作用。为此笔者建议数据库管理员,像这些SET选项语句通常情况下最好放置在批处理程序的前面部分,以初始化批处理程序的相关运行环境。除非有特别的需要,否则的话不要放置在中间。 二、要注意SET选项的作用范围。 其实SET选项设置的参数与数据库服务器的默认参数就好像是一个局部变量
5、与全局变量的关系。前者设置的参数就是一个局部变量,其只有在一个特定的范围内有效;离开了这个范围的话,就会失效。而全局变量的话通常情况下都是有效的,除非在某个领域内又对其重新赋值了。所以说,数据库管理员必须要了解SET选型的作用范围,为后续引用这些参数做好准备。具体来说,这些SET选项,往往跟不同的功能结合使用。如跟批处理程序、跟触发器等等结合使用。而随着这个使用范围的不同,其作用范围也是不同的。 1、在会话过程中有效。有些SET选项是专门针对客户端连接的。如笔者刚开始提起过的那个SET选型,其就是专么用来设置客户端的连接参数的。这些
6、参数可能跟服务器的默认参数之间存在着比较大的差异。那么这些参数的作用范围是多少呢?通常情况下,针对专门会话所这支的SET选项,其在重置或者服务器中用户的会话终止之前有效。也就是说,在客户端连接的初始化过程中SET选项生效。只要用户的这个会话没有终止,这些选项都是生效的。除非用户终止了当前的会话或者服务器强制重置相关参数,否则的话这个SET选项随着会话启用而生效,随着会话终止而失效。另外需要注意的是,针对某个用户设置的SET选项,其只对这个用户的会话有效,而不会影响到其他用户跟数据库之间的通信。 2、支持MARS的连接维护一组默认的S
7、ET选项值。在该连接下执行批处理时,将把默认的SET选项值复制到请求的环境。批处理结束后,该环境将复制回会话的默认设置。通过这种方法,在同一连接下同时执行的多个批处理将在独立的SET选项环境下运行。这是一个官方的说明,他是什么意思呢?也就是说,在同一个连接的过程中,可能会执行多个批处理作业。如果在这些批处理作业中,没有设置SET选项的话,则其默认会采用服务器的默认设置。但是如果在第一个批处理程序中采用了SET选项更改这个默认设置,那么在第一个批处理程序运行环境中就会采用这个SET选项的设置。从而可以根据企业实际的需求,在同一个连接下为
8、每个批处理程序设置相对独立的运行环境。在支持MARS的连接下,如果同时执行多个批处理且它们会修改批处理执行环境,则得到的默认连接环境取决于最后执行完的批处理。也就是说,最后这个连接的参数取决于最后运行的皮处理程序中的SE
此文档下载收益归作者所有