根据MS SQL 2008R2的Microsoft文档,
1)如果未指定SET CONCAT_NULL_YIELDS,则应用CONCAT_NULL_YIELDS_NULL数据库选项的设置 2)SET CONCAT_NULL_YIELDS_NULL的设置在执行或运行时设置,而不是在解析时设置
我将此解释为
只要连接到数据库而不提供SET CONCAT_NULL_YIELDS_NULL命令,它就会默认从数据库选项中设置它
为了验证这一点,我创建了一个名为Test
的数据库,其中包含选项CONCATENATE NULL YIELDS NULL=FALSE
和一个登录名,默认使用此数据库并使用SQLCMD执行以下SQL语句。
set nocount on
declare @dbName sysname
select @dbName = DB_NAME()
select 'I am in database =',@dbName
select 'The CONCAT_NULL_YIELDS_NULL setting is =', is_concat_null_yields_null_on
from sys.databases
where name = @dbName
IF ( (4096 & @@options) = 4096 )
begin
select 'CONCAT_NULL_YIELDS_NULL is ON'
end
else
begin
select 'CONCAT_NULL_YIELDS_NULL is OFF'
end
go
上述SQL的输出是
I am in database = Test
is_concat_null_yields_null_on
The CONCAT_NULL_YIELDS_NULL setting is = 0
CONCAT_NULL_YIELDS_NULL is ON
为什么CONCAT_NULL_YIELDS_NULL ON
应该是OFF,因为数据库Test将此选项设置为OFF?
我对M.S文件的解释是不正确的还是文档本身错了?
我知道此功能已标记为弃用,但我的理解是它仍然对MS SQL2008R2有效。
答案 0 :(得分:1)