您现在的位置: > 技术沙龙 > 数据库 > SQL Server > Transact-SQL 参考 > SET
  • 相关软件
    >SET 创建者:webmaster 更新时间:2006-02-16 15:51

    Transact-SQL 程序设计语言提供了一些 SET 语句,这些语句可以更改特定信息的当前会话处理。



    SET 语句可分为以下几类:












































    分类更改以下各项的当前会话设置
    日期和时间处理日期和时间数据。
    锁定处理 Microsoft® SQL Server™ 锁定。
    杂项SQL Server 的杂项功能。
    查询执行执行和处理查询。
    SQL-92 设置使用 SQL-92 默认设置。
    统计信息显示统计信息。
    事务处理 SQL Server 事务。



    日期和时间语句


    SET DATEFIRST



    SET DATEFORMAT



    锁定语句


    SET DEADLOCK_PRIORITY



    SET LOCK_TIMEOUT



    杂项语句


    SET CONCAT_NULL_YIELDS_NULL



    SET CURSOR_CLOSE_ON_COMMIT



    SET DISABLE_DEF_CNST_CHK



    SET FIPS_FLAGGER



    SET IDENTITY_INSERT



    SET LANGUAGE



    SET OFFSETS



    SET QUOTED_IDENTIFIER



    查询执行语句


    SET ARITHABORT



    SET ARITHIGNORE



    SET FMTONLY



    SET NOCOUNT



    SET NOEXEC



    SET NUMERIC_ROUNDABORT



    SET PARSEONLY



    SET QUERY_GOVERNOR_COST_LIMIT



    SET ROWCOUNT



    SET TEXTSIZE



    SQL-92 设置语句


    SET ANSI_DEFAULTS



    SET ANSI_NULL_DFLT_OFF



    SET ANSI_NULL_DFLT_ON



    SET ANSI_NULLS



    SET ANSI_PADDING



    SET ANSI_WARNINGS



    统计语句


    SET FORCEPLAN



    SET SHOWPLAN_ALL



    SET SHOWPLAN_TEXT



    SET STATISTICS IO



    SET STATISTICS PROFILE



    SET STATISTICS TIME



    事务语句


    SET IMPLICIT_TRANSACTIONS



    SET REMOTE_PROC_TRANSACTIONS



    SET TRANSACTION ISOLATION LEVEL



    SET XACT_ABORT



    使用 SET 语句时的注意事项



    • 除 SET FIPS_FLAGGER、SET OFFSETS、SET PARSEONLY 和 SET QUOTED_IDENTIFIER 外,所有其它 SET 语句均在执行或运行时设置。SET FIPS_FLAGGER、SET OFFSETS、SET PARSEONLY 和 SET QUOTED_IDENTIFIER 语句在分析时设置。



    • 如果在存储过程中设置 SET 语句,则从存储过程返回控制后将还原 SET 选项的值。因此,在动态 SQL 中指定的 SET 语句不影响动态 SQL 语句之后的语句。



    • 存储过程与在执行时指定的 SET 设置一起执行,但 SET ANSI_NULLS 和 SET QUOTED_IDENTIFIER 除外。指定 SET ANSI_NULLS 或 SET QUOTED_IDENTIFIER 的存储过程使用在存储过程创建时指定的设置。如果在存储过程内使用任何 SET 设置,则都将忽略该设置。



    • sp_configureuser options 设置允许服务器范围的设置,并可以跨多个数据库运行。该设置的行为还类似于显式 SET 语句,在登录时出现该设置的情况除外。



    • 数据库设置(使用 sp_dboption 设置的)仅在数据库级上有效,并且只有在未显式设置的情况下才生效。数据库设置替代服务器选项设置(使用 sp_configure 设置)。



    • 对于任何带 ON 和 OFF 设置的 SET 语句,可以为多个 SET 选项指定 ON 或 OFF 设置。例如:
      SET QUOTED_IDENTIFIER, ANSI_NULLS ON 


      将 QUOTED_IDENTIFIER 和 ANSI_NULLS 均设置为 ON。



    • SET 语句设置将替代数据库选项设置(使用 sp_dboption 设置的)。另外,如果用户在连接到数据库时所基于的值是由于先前使用 sp_configure user options 设置而生效的,或者所基于的值适用于所有 ODBC 和 OLE/DB 连接,则一些连接设置将自动设置为 ON。



    • 当全局或快捷 SET 语句(如 SET ANSI_DEFAULTS)设置多个设置时,发出快捷 SET 语句将为所有受快捷 SET 语句影响的选项重置先前的设置。如果在发出快捷 SET 语句后显式设置受快捷 SET 语句影响的个别 SET 选项,则个别 SET 语句将替代相应的快捷设置。



    • 当使用批处理时,数据库上下文由使用 USE 语句建立的批处理决定。在存储过程的外部执行的以及批处理中的特殊查询和所有其它语句,继承使用 USE 语句建立的数据库和连接的选项设置。



    • 当从批处理或另一个存储过程执行某个存储过程时,该存储过程将根据所在的数据库中当前设置的选项值执行。例如,当存储过程 db1.dbo.sp1 调用存储过程 db2.dbo.sp2 时,存储过程 sp1 根据数据库 db1 的当前兼容级别设置去执行,存储过程 sp2 根据数据库 db2 的当前兼容级别设置去执行。



    • 当 Transact-SQL 语句引用驻留在多个数据库中的对象时,当前数据库上下文和当前连接上下文(如果位于批处理中,则是由 USE 语句定义的数据库;如果位于存储过程中,则是包含该存储过程的数据库)将应用于该语句。



    • 当在计算列或索引视图上创建和操作索引时,必须将 SET 选项 ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、ANSI_PADDING 和 ANSI_WARNINGS 设置为 ON。必须将选项 NUMERIC_ROUNDABORT 设置为 OFF。

      如果这些选项中的任何一个没有设置为所要求的值,则在索引视图上或在计算列带索引的表上进行的 INSERT、UPDATE 和 DELETE 操作将失败。SQL Server 将发出一个错误,列出所有设置不正确的选项。同时,SQL Server 将在这些表或索引视图上处理 SELECT 语句,仿佛计算列或视图上不存在索引一样。



    相关文章
    本页查看次数: