As opções estão padronizadas para
OFF
porque, com toda a probabilidade, esse banco de dados foi criado e roteirizado sem tocar em nenhum dos padrões. Quando um banco de dados é criado, ele é essencialmente clonado do model
banco de dados do sistema e, em uma nova instalação do SQL Server, as configurações ANSI no banco de dados serão OFF
, embora algumas dessas configurações (como ANSI_NULLS
) são opções que você nunca gostaria que estivessem OFF
para qualquer aplicativo de banco de dados moderno. Na verdade, no caso de ANSI_NULLS
em particular, a documentação especifica que a capacidade de desativá-lo está obsoleta
, embora provavelmente ainda demore alguns anos até que esse seja realmente o caso. E é aí que está o problema:essas configurações ainda são mantidas
OFF
para o benefício de aplicativos antigos, que tiveram que ativar essas opções ON
caminho de volta quando se beneficiar de sua bondade (e mudanças de ruptura). Se a sessão não especificar valores para eles, as configurações do banco de dados serão aplicadas. Mas a maioria dos aplicativos faz especifique essas configurações em uma sessão, se não explicitamente, então implicitamente por meio de sua biblioteca de acesso a dados. De acordo com a documentação em
SET ANSI_DEFAULTS
, que alterna várias configurações de uma só vez:A DB-Library é uma biblioteca de acesso antiga que, no entanto, ainda é usada por alguns aplicativos antigos e, opcionalmente, como fonte de apoio para coisas como FreeTDS, então, de vez em quando, você ainda pode encontrar um aplicativo que deliberadamente ou acidentalmente usa as configurações do banco de dados, mas isso é cada vez mais raro.
Quanto ao melhor valor para essas opções, que depende inteiramente do seu caso de uso. Se você precisar dar suporte a aplicativos antigos que esperam um comportamento antigo, talvez não tenha a opção de deixar as configurações do banco de dados em
OFF
. Se você tiver um aplicativo que se conecta por meio de uma biblioteca antiga, mas realmente espera uma semântica SQL moderna, talvez queira ativá-los ON
. Para todos os outros aplicativos, essas opções provavelmente já estão definidas por sessão para seus valores (in)corretos pelo próprio aplicativo e o que você configurar não importará de qualquer maneira. Uma discussão sobre cada opção individual e quando você deseja ativá-la
ON
ou OFF
excederia os limites de uma resposta razoável. Consulte a documentação de cada um deles e formule suas próprias práticas recomendadas. Você pode deixar coisas como o SET
requisitos de opção para índices em colunas computadas
guiá-lo, que exigem um monte de opções para estar ON
antes mesmo que você possa criá-los (e eles geralmente são considerados uma coisa boa de se ter).