关于SQL Server 默认连接选项二三事

来源:互联网 发布:知乎 印度军工 编辑:程序博客网 时间:2024/06/01 09:58

一、SQLserver 默认连接选项

当我们连接sqlserver数据库时,我们发现Sqlserver Profiler 里面的Audit Login 事件:

-- network protocol: TCP/IP

1    set quoted_identifieron

2 set arithabortoff

3    set numeric_roundabortoff

4    set ansi_warningson

5    set ansi_paddingon

6    set ansi_nullson

7    set concat_null_yields_nullon

8    set cursor_close_on_commitoff

9    set implicit_transactionsoff

10   set language 简体中文

11   set dateformat ymd

12   set datefirst7

13   set transaction isolation level read committed

 

1    set quoted_identifieron

ON:表示标识符可以由双引号分隔,而文字必须由单引号分隔. eg:

 select * from "students"where"name"='lili'.

OFF: 文字可以用单引号,也可以用双引号.

(1)当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。

(2)当在计算列或索引视图上创建或操作索引时,SET QUOTED_IDENTIFIER 必须为 ON。如果 SET QUOTED_IDENTIFIER 为 OFF,则计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。

2    set arithabortoff

在登录会话中,应始终将 ARITHABORT 设置为 ON。 将 ARITHABORT 设置为 OFF 可能对查询优化产生负面影响,进而导致性能问题。

3    set numeric_roundabortoff

ON: 在表达式中出现精度损失时将生成错误。

OFF:精度损失不生成错误信息,并且将结果舍入为存储结果的列或变量的精度。

4    set ansi_warningson

ON:

(1)如果聚合函数(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出现空值,将生成警告消息.

(2) 被零除错误和算术溢出错误将导致回滚语句,并生成错误消息。

OFF:

(1)不发出警告.

(2)被零除错误和算术溢出错误将导致返回空值。

5    set ansi_paddingon

推荐设置为:ON

6    set ansi_nullson

ON:

(1)在执行分布式查询时应将 SET ANSI_NULLS 设置为 ON。

(2)当 column_name 中包含空值,使用 WHERE column_name =NULL 的 SELECT 语句仍返回零行。 即使 column_name 中包含非空值,使用 WHERE column_name<> NULL 的 SELECT 语句仍会返回零行。

OFF:

(1) 使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。

7    set concat_null_yields_nullon

ON:串联空值与字符串将产生 NULL 结果.eg:SELECT 'abc' + NULL 将生成 NULL.

OFF:空值作为空字符串处理.eg: SELECT 'abc' + NULL 将生成 abc.

8    set cursor_close_on_commitoff

ON:遵从 ISO 标准,在提交或回滚时关闭所有打开的游标.

OFF:则在提交事务时将不关闭游标.

9    set implicit_transactionsoff

ON:(1)隐式事物模式,即每句sql操作默认开启事物,用户必须在该事务结束时将其显式(手动commit)提交或回滚。否则,当用户断开连接时,事务及其包含的所有数据更改将被回滚。

(2)当SET IMPLICIT_TRANSACTIONS 为 ON 时执行 BEGIN TRANSACTION 语句会导致打开两个嵌套的事务;外层的rollback会回滚掉内层事务的所有commit修改.

OFF: 切换到「自动提交模式」下,所有单个语句在成功完成时将被提交。

set implicit_transactionson

select @@TRANCOUNT--查看事务个数

begin transaction -- 显式调用事务

update test..studentsset passwd='123456' where name='lili'

commit transaction

--Commit outstanding transaction.

COMMIT TRANSACTION;

sample:

10   set language 简体中文

11   set dateformat ymd

12   set datefirst7s

13       set transaction isolation level read committed

   

 

ODBC(default)

MSDN提示是否可在ODBC设置

now

1

quoted_identifier

ON

ON

2

arithabort

-

×

OFF

3

numeric_roundabort

-

×

OFF

4

ansi_warnings

ON

ON

5

ansi_padding

ON

ON

6

ansi_nulls

ON

ON

7

concat_null_yields_null

-

×

ON

8

cursor_close_on_commit

OFF

OFF

9

implicit_transactions

OFF

OFF

二、如何设置这些属性

1. 在数据源中设置

该设置可以在 ODBC 数据源、ODBC 连接属性或 OLE DB 连接属性(它们在连接到 SQL Server 实例之前在应用程序中设置)中进行配置。

(控制面板->管理工具->数据源ODBC)

   2. 在服务器端设置:(√可设置开启

参考

微软中国TechNet:https://technet.microsoft.com/zh-cn/library/ms190356(v=sql.120).aspx


0 0
原创粉丝点击