SQL Server选项综述
I. 基本概念
SQL Server中的选项根据其作用范围分为如下几类:
- 实例选项 —— 在数据库实例范围内有效,通过 sp_configure 存储过程进行配置。
- 数据库选项 —— 在数据库范围内有效,通过 ALTER DATABASE SET 语句进行配置。
- 批处理选项 —— 批处理选项又称SET选项,其有效域需根据具体情况确定,它通过SET语句来修改。批处理选项在会话建立时根据用户选项或连接选项初始化。其中,用户选项在用户登录时通过实例选项中的“user options” 选项获得;连接选项通过 ODBC 或 OLE DB 连接属性获得。
- 语句选项 —— 查询语句中通过提示关键字(如查询提示,表提示,联接提示等)设置的选项或策略。详见 提示 (Transact-SQL)。
II. 选项作用层次结构
当某一选项在多个级别受到支持时,将按如下层次发生作用:
1. 数据库选项替代实例选项。
2. 批处理(SET)选项代替数据库选项。
3. 语句选项(提示)代替批处理选项。
III. 各类选项的配置及查看
1. 实例选项
1)查看实例选项
SELECT * FROM sys.configurations ORDER BY name
--或
sp_configure
可用的实例选项及定义详见:http://technet.microsoft.com/zh-cn/library/ms189631(v=sql.105).aspx
2)设置实例选项
sp_configure 'fill factor', 100;
GO
RECONFIGURE;
GO
注意:在通过sp_configure配置实例选项后,此选项不会立即生效,除非重启服务或执行RECONFIGURE语句。
详见:http://technet.microsoft.com/zh-cn/library/ms188787(v=sql.105).aspx
2. 数据库选项
1)查看数据库选项
SELECT is_ansi_nulls_on FROM sys.databases WHERE name = 'DBName'
--或
SELECT * FROM sys.databases WHERE name = 'DBName'
注意:上面SQL语句中'DBName'不要加'[]',否则查询不出结果。
数据库选项的缺省值在model数据库中定义:http://technet.microsoft.com/zh-cn/library/ms186388(v=sql.105).aspx
可用的数据库选项及定义详见:http://technet.microsoft.com/zh-cn/library/ms190249(v=sql.105).aspx
2)设置数据库选项
ALTER DATABASE DBName SET RECOVERY FULL, PAGE_VERIFY CHECKSUM
详见:http://technet.microsoft.com/zh-cn/library/bb522682(v=sql.105).aspx
3. 批处理选项
1)查看批处理选项
批处理选项的具体取值由两部分因素决定,一是会话的初始值(由用户选项或连接选项决定),二是批处理语句所处的上下文及SET语句的使用情况。也就是说,如果上下文或批处理语句中都没有执行SET语句,则批处理选项的取值为会话的初始值,否则其取值由上下文及批处理中SET语句的设置值决定。关于上下文有如下情况:
- 由用户设置的 SET 选项在会话存在期间有效。
- 在存储过程或触发器内设置的 SET 选项在该存储过程或触发器语句块内有效。
- 除非进行显式重置,否则来自所有更高级别的代码中的 SET 选项值在存储过程或触发器内有效。
- 动态 SQL 批处理内由用户设置的 SET 选项仅在该批处理块内有效。
- 除非进行重置,否则为连接设置的 SET 选项在连接到其他数据库之后有效。
对于批处理执行时的SET选项可用如下语句查看:
SELECT 'DISABLE_DEF_CNST_CHK', CASE WHEN (1 & @@OPTIONS) = 1 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'IMPLICIT_TRANSACTIONS', CASE WHEN (2 & @@OPTIONS) = 2 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'CURSOR_CLOSE_ON_COMMIT', CASE WHEN (4 & @@OPTIONS) = 4 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_WARNINGS', CASE WHEN (8 & @@OPTIONS) = 8 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_PADDING', CASE WHEN (16 & @@OPTIONS) = 16 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_NULLS', CASE WHEN (32 & @@OPTIONS) = 32 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ARITHABORT', CASE WHEN (64 & @@OPTIONS) = 64 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ARITHIGNORE', CASE WHEN (128 & @@OPTIONS) = 128 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'QUOTED_IDENTIFIER', CASE WHEN (256 & @@OPTIONS) = 256 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'NOCOUNT', CASE WHEN (512 & @@OPTIONS) = 512 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_NULL_DFLT_ON', CASE WHEN (1024 & @@OPTIONS) = 1024 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_NULL_DFLT_OFF', CASE WHEN (2048 & @@OPTIONS) = 2048 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'CONCAT_NULL_YIELDS_NULL', CASE WHEN (4096 & @@OPTIONS) = 4096 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'NUMERIC_ROUNDABORT', CASE WHEN (8192 & @@OPTIONS) = 8192 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'XACT_ABORT', CASE WHEN (16384 & @@OPTIONS) = 16384 THEN 'ON' ELSE 'OFF' END
可用的SET选项及定义详见:http://technet.microsoft.com/zh-cn/library/ms190707(v=sql.105).aspx
也可通过如下语句查看用户选项缺省值:
DECLARE @UserOptions INT
SELECT @UserOptions=CONVERT(INT,value_in_use) FROM sys.configurations WHERE name='user options' SELECT 'DISABLE_DEF_CNST_CHK', CASE WHEN (1 & @UserOptions) = 1 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'IMPLICIT_TRANSACTIONS', CASE WHEN (2 & @UserOptions) = 2 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'CURSOR_CLOSE_ON_COMMIT', CASE WHEN (4 & @UserOptions) = 4 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_WARNINGS', CASE WHEN (8 & @UserOptions) = 8 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_PADDING', CASE WHEN (16 & @UserOptions) = 16 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_NULLS', CASE WHEN (32 & @UserOptions) = 32 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ARITHABORT', CASE WHEN (64 & @UserOptions) = 64 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ARITHIGNORE', CASE WHEN (128 & @UserOptions) = 128 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'QUOTED_IDENTIFIER', CASE WHEN (256 & @UserOptions) = 256 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'NOCOUNT', CASE WHEN (512 & @UserOptions) = 512 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_NULL_DFLT_ON', CASE WHEN (1024 & @UserOptions) = 1024 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'ANSI_NULL_DFLT_OFF', CASE WHEN (2048 & @UserOptions) = 2048 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'CONCAT_NULL_YIELDS_NULL', CASE WHEN (4096 & @UserOptions) = 4096 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'NUMERIC_ROUNDABORT', CASE WHEN (8192 & @UserOptions) = 8192 THEN 'ON' ELSE 'OFF' END
UNION
SELECT 'XACT_ABORT', CASE WHEN (16384 & @UserOptions) = 16384 THEN 'ON' ELSE 'OFF' END
可用的用户选项及定义详见:http://technet.microsoft.com/zh-cn/library/ms176031(v=sql.105).aspx
2)设置批处理(SET)选项
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
详见:http://technet.microsoft.com/zh-cn/library/ms190356(v=sql.105).aspx
另外,Transact-SQL 提供 SET ANSI_DEFAULTS 语句作为设置下列 ISO 标准选项的快捷方式:
- SET ANSI_NULLS
- SET CURSOR_CLOSE_ON_COMMIT
- SET ANSI_NULL_DFLT_ON
- SET IMPLICIT_TRANSACTIONS
- SET ANSI_PADDING
- SET QUOTED_IDENTIFIER
- SET ANSI_WARNINGS
详见:http://technet.microsoft.com/zh-cn/library/ms190707(v=sql.105).aspx
可通过如下语句设置用户选项缺省值:
sp_configure 'user options', 5496
GO
RECONFIGURE
GO
参考:
http://technet.microsoft.com/zh-cn/library/ms191203(v=sql.105).aspx
http://www.mssqltips.com/sqlservertip/1415/determining-set-options-for-a-current-session-in-sql-server/
SQL Server选项综述的更多相关文章
- 微软ASP.NET网站部署指南(10):迁移至SQL Server
1. 综述 第2章的部署SQL Server Compact和第9章的部署数据库更新里解释了为什么终于要升级到完整版SQL Server .本章节将告诉你怎样来做. SQL Server Expre ...
- Azure 虚拟机上的 SQL Server 常见问题
本主题提供有关运行 Azure 虚拟机中的 SQL Server 时出现的一些最常见问题的解答. 如果本文未解决你的 Azure 问题,请访问 MSDN 和 CSDN 上的 Azure 论坛. 你可以 ...
- SQL server 2008 r2 安装图文详解
文末有官网下载地址.百度网盘下载地址和产品序列号以及密钥,中间需要用到密钥和序列号的可以到文末找选择网盘下载的下载解压后是镜像文件,还需要解压一次直接右键点击解如图所示选项,官网下载安装包的可以跳过前 ...
- SQL Server 2008R2安装
SQL Server 2008详细安装过程及配置 https://www.cnblogs.com/rewwensoftware/p/9580697.html SQL Server 2008R2 百 ...
- 安装SQL server 提示重新启动计算机失败
SQL Server2008是一款功能强大.实用性强的mysql数据库管理系统,因此很多用户都会在Win7系统中安装SQL Server2008,但是不少用户在安装过程中遇到问题,安装SQL Serv ...
- SQL SERVER性能优化综述
SQL SERVER性能优化综述 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软 ...
- SQL Server安装完成后3个需要立即修改的配置选项(转载)
你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...
- SQL Server 数据库的自动选项
自动选项影响SQL Server 可能会自动进行的操作,所有的这些都是bool值,值为on 或off 1. auto_close: 当这个为on 时.数据库在最后一个用户退出后完全关闭,这样数据库就不 ...
- SQL Server 数据库状态选项
选项 1. single_user(单用户),multi_user(多用户),restricted_user(受限用户); 描述数据库的用户访问属性,它们互斥,设置其中任何一个选项就会取消对其它选项的 ...
随机推荐
- linux命令之三
0102 文档查阅指令 cat tac nl 简单查阅,-n 可显示行 more, less less is more 查询大文件,可分页. head tail 从头尾看.-n 限制行数. taif ...
- Linear Algebra Lecture5 note
Section 2.7 PA=LU and Section 3.1 Vector Spaces and Subspaces Transpose(转置) example: 特殊情况,对称 ...
- Linux上搭建Elasticsearch服务器并同步数据库
1.准备工作 下载Elasticsearch版本号2.3.4 https://www.elastic.co/downloads/past-releases/elasticsearch- ...
- hdu1260 dp
题意:有 k 个人需要买电影票,a[i] 表示第 i 个人单独买票要花费的时间,b[i] 表示第 i-1 个和第 i 个人一起买票需要花费的时间,问卖给所有人各一张票最少需要到什么时候. dp[i]表 ...
- tomcat7 启动项目报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()
JDK版本:jdk1.8.0_77 Tomcat 版本:apache-tomcat-7.0.47 异常重现步骤: 1.完成项目部署 2.启动Tomcat 异常头部信息:java.lang.NoSuch ...
- 全面解析sizeof(上) 分类: C/C++ StudyNotes 2015-06-15 10:18 188人阅读 评论(0) 收藏
以下代码使用平台是Windows7 64bits+VS2012. sizeof是C/C++中的一个操作符(operator),其作用就是返回一个对象或者类型所占的内存字节数,使用频繁,有必须对齐有个全 ...
- 【ZOJ1003】Crashing Balloon(DFS)
Crashing Balloon Time Limit: 2 Seconds Memory Limit: 65536 KB On every June 1st, the Children's ...
- 百度网盘kbengine - warring项目下载地址
http://pan.baidu.com/s/1k4J4y 下载解压之后,请看<<使用说明.doc>>,有更新指导
- 使用keytool 生成证书
keytool 工具介绍 keytool 是java 用于管理密钥和证书的工具,其功能包括: 1 创建并管理密钥 2 创建并管理证书 3 作为CA 为证书授权 4 导入导出证书 keytool 采用k ...
- maven3.2.3+eclipse4.4+JDK1.8+win8.1_64bit环境搭建
--------------------------------------- 博文作者:迦壹 博客标题:win8.1_64bit+eclipse4.4+maven3.2.3+JDK1.8环境搭建 博 ...