SET ...问题你遇到过吗?

Rain.Qin 2003-04-24 01:28:28
不知各位高手在写分布式SQL的应用程序时是否否遇到“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。”的错误提示,本人曾在编写分布式SQL的应用程序时遇到,经过大量搜捕后发现问题所在,现不敢独享:原来在创建修改存储过程时所进行的SET...语句设置在执行时无效,即存储过程只使用最初的set...项。解决问题的办法是删除原存储过程重新用Create procdure...创建并在AS后设置set...项(最好在查询分析器中执行)。

使用 SET 语句时的注意事项如下:
1、除 SET FIPS_FLAGGER、SET OFFSETS、SET PARSEONLY 和 SET QUOTED_IDENTIFIER 外,所有其它 SET 语句均在执行或运行时设置。SET FIPS_FLAGGER、SET OFFSETS、SET

PARSEONLY 和 SET QUOTED_IDENTIFIER 语句在分析时设置。
2、如果在存储过程中设置 SET 语句,则从存储过程返回控制后将还原 SET 选项的值。因此,在动态 SQL 中指定的 SET 语句不影响动态 SQL 语句之后的语句。
3、存储过程与在执行时指定的 SET 设置一起执行,但 SET ANSI_NULLS 和 SET QUOTED_IDENTIFIER 除外。指定 SET ANSI_NULLS 或 SET QUOTED_IDENTIFIER 的存储过程使用在存储过程创建时指定的设置。如果在存储过程内使用任何 SET 设置,则都将忽略该设置。
4、sp_configure 的 user options 设置允许服务器范围的设置,并可以跨多个数据库运行。该设置的行为还类似于显式 SET 语句,在登录时出现该设置的情况除外。
5、数据库设置(使用 sp_dboption 设置的)仅在数据库级上有效,并且只有在未显式设置的情况下才生效。数据库设置替代服务器选项设置(使用 sp_configure 设置)。
6、对于任何带 ON 和 OFF 设置的 SET 语句,可以为多个 SET 选项指定 ON 或 OFF 设置。例如:SET QUOTED_IDENTIFIER, ANSI_NULLS ON
将 QUOTED_IDENTIFIER 和 ANSI_NULLS 均设置为 ON。
7、SET 语句设置将替代数据库选项设置(使用 sp_dboption 设置的)。另外,如果用户在连接到数据库时所基于的值是由于先前使用 sp_configure user options 设置而生效的,或者所基于的值适用于所有 ODBC 和 OLE/DB 连接,则一些连接设置将自动设置为 ON。
8、当全局或快捷 SET 语句(如 SET ANSI_DEFAULTS)设置多个设置时,发出快捷 SET 语句将为所有受快捷 SET 语句影响的选项重置先前的设置。如果在发出快捷 SET 语句后显式设置受快捷 SET 语句影响的个别 SET 选项,则个别 SET 语句将替代相应的快捷设置。
9、当使用批处理时,数据库上下文由使用 USE 语句建立的批处理决定。在存储过程的外部执行的以及批处理中的特殊查询和所有其它语句,继承使用 USE 语句建立的数据库和连接的选项设置。
10、当从批处理或另一个存储过程执行某个存储过程时,该存储过程将根据所在的数据库中当前设置的选项值执行。例如,当存储过程 db1.dbo.sp1 调用存储过程 db2.dbo.sp2 时,存储过程 sp1 根据数据库 db1 的当前兼容级别设置去执行,存储过程 sp2 根据数据库 db2 的当前兼容级别设置去执行。
11、当 Transact-SQL 语句引用驻留在多个数据库中的对象时,当前数据库上下文和当前连接上下文(如果位于批处理中,则是由 USE 语句定义的数据库;如果位于存储过程中,则是包含该存储过程的数据库)将应用于该语句。
12、当在计算列或索引视图上创建和操作索引时,必须将 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 语句,仿佛计算列或视图上不存在索引一样。

...全文
79 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧