一、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_identifier on
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 arithabort off
在登录会话中,应始终将 ARITHABORT 设置为 ON。 将 ARITHABORT 设置为 OFF 可能对查询优化产生负面影响,进而导致性能问题。
3 set numeric_roundabort off
ON: 在表达式中出现精度损失时将生成错误。
OFF:精度损失不生成错误信息,并且将结果舍入为存储结果的列或变量的精度。
4 set ansi_warnings on
ON:
(1)如果聚合函数(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出现空值,将生成警告消息.
(2) 被零除错误和算术溢出错误将导致回滚语句,并生成错误消息。
OFF:
(1)不发出警告.
(2)被零除错误和算术溢出错误将导致返回空值。
5 set ansi_padding on
推荐设置为:ON
6 set ansi_nulls on
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_null on
ON:串联空值与字符串将产生 NULL 结果.eg:SELECT 'abc' + NULL 将生成 NULL.
OFF:空值作为空字符串处理.eg: SELECT 'abc' + NULL 将生成 abc.
8 set cursor_close_on_commit off
ON:遵从 ISO 标准,在提交或回滚时关闭所有打开的游标.
OFF:则在提交事务时将不关闭游标.
9 set implicit_transactions off
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
二、如何设置这些属性
1. 在数据源中设置
该设置可以在 ODBC 数据源、ODBC 连接属性或 OLE DB 连接属性(它们在连接到 SQL Server 实例之前在应用程序中设置)中进行配置。
(控制面板->管理工具->数据源ODBC)
2. 在服务器端设置:(√可设置开启)
参考
微软中国TechNet:https://technet.microsoft.com/zh-cn/library/ms190356(v=sql.120).aspx
————————————————
原文链接:https://blog.csdn.net/sunquana/article/details/47687517