SQL Server中的ANSI_NULLS标志?

时间:2012-06-30 08:35:50

标签: sql-server tsql sql-server-2005

我可以使用SET ANSI_NULLSSET ANSI_NULLS OFF

更改SET ANSI_NULLS ON的值

问题#1 如何获取当前值?

问题#2 设置值是否应用于查询?表?实例?整个db?

问题#3 如果我进入了if myNullParam <>null的公司,我应该检查哪些地方(db?schema?query?)告诉他们 - 这会工作,还是不

感谢。

4 个答案:

答案 0 :(得分:6)

  1. select databasepropertyex('MyDatabaseName', 'IsAnsiNullsEnabled')将告诉您数据库的默认值。 Hitesh的回答将告诉你当前会议的价值。
  2. 数据库具有默认设置,每个会话都可以覆盖数据库默认值。
  3. 会话值。但是,MSDN文档说For a script to work as intended, regardless of the ANSI_NULLS database option or the setting of SET ANSI_NULLS, use IS NULL and IS NOT NULL in comparisons that might contain null values.因此,尽管它可能有效,但它肯定会违反最佳做法。

答案 1 :(得分:4)

答案1

您可以运行以下查询以获取是否设置了ANSI_NULLS。

DECLARE @options INT
SELECT @options = @@OPTIONS
IF ( (32 & @options) = 32 ) PRINT 'ANSI_NULLS'

如果打印ANSI_NULLS,则设置ANSI_NULLS或未设置。

您可以在http://www.mssqltips.com/sqlservertip/1415/determining-set-options-for-a-current-session-in-sql-server/

找到更多帮助

答案 2 :(得分:1)

您可以使用此查询来获取给定数据库的属性:

SELECT is_ansi_nulls_on FROM sys.databases WHERE name = 'yourDatabase'

答案 3 :(得分:0)

您可以按照下面的说明检查所有设置

dbcc useroptions