Aparentemente, o SQL Server armazena a configuração ANSI_NULL atual ao criar uma tabela (consulte as perguntas relacionadas aqui e aqui ).
No entanto, quando eu executo
SELECT * FROM myVeryOldTable WHERE someFieldWithNullValues = NULL
Obtenho zero resultados, mesmo que a tabela antiga tenha sido criada com ANSI_NULL OFF . Portanto, aparentemente, o SQL Server usa a configuração de conexão atual , que é ANSI_NULL ON.
Se for esse o caso, que diferença faz a configuração armazenada na tabela (exceto para causar problemas em vários casos)? Por que ele é armazenado, se a configuração da conexão sempre substitui a configuração da mesa?
A configuração ANSI_NULLS em nível de tabela é importante para operações automáticas em nível de tabela, como ao processar colunas computadas. Isso também se aplica a outros objetos, como gatilhos (como visto aqui ).
No entanto, para operações na tabela (ou seja, comparações em consultas), a conexão se aplica - isso pode ser bastante confuso se você não estiver esperando uma diferença de comportamento entre o que você faz ativamente e as operações automáticas.