SET 选项

下表提供了 MicrosoftSQL Server 支持的 SET 选项以及相应数据库和服务器选项的按字母顺序排序的列表。

SET 选项

数据库选项

服务器选项

默认设置

SET ANSI_DEFAULTS (Transact-SQL)

不可用

SET ANSI_NULL_DFLT_OFF (Transact-SQL)

SET ANSI_NULL_DFLT_ON (Transact-SQL)

ANSI_NULL_DEFAULT

user options 指定默认设置

OFF

SET ANSI_NULLS (Transact-SQL)

ANSI_NULLS

user options 指定默认设置

OFF

SET ANSI_PADDING (Transact-SQL)

ANSI_PADDING

user options 指定默认设置

ON

SET ANSI_WARNINGS (Transact-SQL)

ANSI_WARNINGS

user options 指定默认设置

OFF

SET ARITHABORT (Transact-SQL)

ARITHABORT

user options 指定默认设置

OFF

SET ARITHIGNORE (Transact-SQL)

user options 指定默认设置

OFF

SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

CONCAT_NULL_YIELDS_NULL

OFF

SET CONTEXT_INFO (Transact-SQL)

OFF

SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL)

CURSOR_CLOSE ON_COMMIT

user options 指定默认设置

OFF

SET DATEFIRST (Transact-SQL)

7

SET DATEFORMAT (Transact-SQL)

mdy

SET DEADLOCK_PRIORITY (Transact-SQL)

NORMAL

SET FIPS_FLAGGER (Transact-SQL)

OFF

SET FMTONLY (Transact-SQL)

OFF

SET FORCEPLAN (Transact-SQL)

OFF

SET IDENTITY_INSERT (Transact-SQL)

 

OFF

SET IMPLICIT_TRANSACTIONS (Transact-SQL)

user options 指定默认设置

OFF

SET LANGUAGE (Transact-SQL)

us_english

SET LOCK_TIMEOUT (Transact-SQL)

无限制

SET NOCOUNT (Transact-SQL)

user options 指定默认设置

OFF

SET NOEXEC (Transact-SQL)

OFF

SET NUMERIC_ROUNDABORT (Transact-SQL)

NUMERIC_ROUNDABORT

OFF

SET OFFSETS (Transact-SQL)

OFF

SET PARSEONLY (Transact-SQL)

OFF

SET QUERY_GOVERNOR_COST_LIMIT (Transact-SQL)

query governor cost limit

OFF

SET QUOTED_IDENTIFIER (Transact-SQL)

带引号的标识符

user options 指定默认设置

OFF

SET REMOTE_PROC_TRANSACTIONS (Transact-SQL)

OFF

SET ROWCOUNT (Transact-SQL)

OFF

SET SHOWPLAN_ALL (Transact-SQL)

OFF

SET SHOWPLAN_TEXT (Transact-SQL)

OFF

SET SHOWPLAN_XML (Transact-SQL)

OFF

SET STATISTICS IO (Transact-SQL)

OFF

SET STATISTICS PROFILE (Transact-SQL)

OFF

SET STATISTICS TIME (Transact-SQL)

OFF

SET STATISTICS XML (Transact-SQL)

OFF

SET TEXTSIZE (Transact-SQL)

OFF

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

不适用

SET XACT_ABORT (Transact-SQL)

OFF

分析时 SET 选项和执行时 SET 选项

SET 选项何时生效取决于此选项是分析时选项还是执行时选项。分析时选项在分析期间分析出文本中的选项时生效,而不管是否受流语句的控制。执行时选项在指定这些选项的代码执行期间生效。如果在执行 SET 语句前执行失败,则未设置此选项。如果在执行 SET 语句后执行失败,则已设置此选项。

QUOTED_IDENTIFIER、PARSEONLY、OFFSETS 和 FIPS_FLAGGER 选项均为分析时选项。所有其他 SET 选项均为执行时选项。

批处理或存储过程内出现的 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 语句不影响该批处理或存储过程。相反,用于批处理或存储过程内部语句的设置则是在创建批处理或存储过程时生效的设置。

SET 选项的持续时间

本节介绍了 SET 选项的持续时间。

  • 脚本中由用户设置的 SET 选项在重置或服务器中用户的会话终止之前有效。

  • 在存储过程或触发器内设置的 SET 选项在该存储过程或触发器内重置或控制返回到调用该存储过程或触发器的代码之前有效。

  • 支持 MARS 的连接维护一组默认的 SET 选项值。在该连接下执行批处理时,将把默认的 SET 选项值复制到请求的环境。批处理结束后,该环境将复制回会话的默认设置。通过这种方法,在同一连接下同时执行的多个批处理将在独立的 SET 选项环境下运行。

    注意注意

    在支持 MARS 的连接下,如果同时执行多个批处理且它们会修改批处理执行环境,则得到的默认连接环境取决于最后执行完的批处理。

  • 除非进行显式重置,否则来自所有更高级别的代码中的 SET 选项值在存储过程或触发器内有效。

  • 动态 SQL 批处理内由用户设置的 SET 选项仅在该批处理的持续时间内有效。

  • 除非进行显式或隐式重置,否则为连接设置的 SET 选项在连接到其他数据库之后有效。

    注意注意

    还需注意,用户连接到数据库时,根据服务器选项 user options 以前指定的值或应用于所有 ODBC 和 OLE DB 连接的值,某些选项可能会自动设置为 ON。

快捷方式 SET 选项

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

此快捷方式可重置这些选项的值。使用此快捷方式后设置的任何单个选项将覆盖此快捷方式所设置的相应值。

注意注意

SET ANSI_DEFAULTS 并非设置符合 ISO 标准的所有选项。