Sql server CONCAT\u NULL\u NULL SQL是否为持久运行时设置?(服务器2000及以上版本)

Sql server CONCAT\u NULL\u NULL SQL是否为持久运行时设置?(服务器2000及以上版本),sql-server,Sql Server,好的,我知道CONCAT_NULL_YIELDS_NULL在SQL的未来版本(insert MSDN search params(yadda,yadda))中将始终设置为ON,所以请耐心听我说 无聊的细节:该平台是MSSQL 2000 Enterprise(v8 sp4)又名标准期版本 以下内容将计算为NULL SELECT 'abc' + NULL; 可以理解。但您可以通过以下方法来规避此问题: SET CONCAT_NULL_YIELDS_NULL OFF; SELECT 'abc' +

好的,我知道CONCAT_NULL_YIELDS_NULL在SQL的未来版本(insert MSDN search params(yadda,yadda))中将始终设置为ON,所以请耐心听我说

无聊的细节:该平台是MSSQL 2000 Enterprise(v8 sp4)又名标准期版本

以下内容将计算为NULL

SELECT 'abc' + NULL; 
可以理解。但您可以通过以下方法来规避此问题:

SET CONCAT_NULL_YIELDS_NULL OFF;
SELECT 'abc' + NULL; 
在这种情况下,结果是“abc”。从现在开始,未来的sql语句将允许使用NULL进行连接。但这是“持久”运行时设置吗?例如,此设置仅适用于我对SQL server的会话,还是适用于所有用户执行的语句

据我所知,在将_YIELDS _NULL设置为ON之后,重新启动MSSQL服务将使其默认值恢复为OFF(如果我错了,请纠正我)

最后一件事:我并不打算把它付诸实践。第三方存储过程失败(看起来他们可能已经更新了它,破坏了它)。我能想到的最好情况是,他们在实现它时假设“SET CONCAT_NULL_YIELDS_NULL”设置为ON。它过去一直都很有效

我只是在寻找一个原因:有没有办法在SQL server启动时将CONCAT\u NULL\u YIELDS\u NULL设置为ON

如果在存储的 过程中,设置选项的值 在返回控件后恢复 从存储过程中


因此,开发人员几乎不需要做什么来确保正确的设置。他们可以在SP开始时设置它们,之后甚至不必恢复原始值。

CONCAT\u NULL\u可以设置为:

  • 每个连接-当您关闭连接并打开新连接时,它将恢复为默认值

  • 每个数据库

    • 打开Microsoft SQL Server Management Studio,右键单击数据库并选择属性。在杂项部分
  • 或者来自T-SQL

    ALTER DATABASE DATABASE_name SET{CONCAT_NULL_生成_NULL OFF}

注意:一些客户端在打开连接时可以发出SETCONCAT_null_INDUCTS_null on命令。例如,连接到SQLServerManagementStudio的SQLServer2005就是这样。 使用SQL Server Profiller查找有关您的连接的信息


我的笔记本上没有SQL 2000,无法在该版本上进行精确测试。

Whoops。看起来该设置仅适用于当前语句(如中所示,执行“asd”+NULL将在新查询中导致NULL)。所以它看起来不是全球性的。不过,这个第三方开发者是否可以做些什么来保持它的开启状态?