Les options sont par défaut sur OFF
car, selon toute vraisemblance, cette base de données a été créée et scriptée sans toucher à aucune des valeurs par défaut. Lorsqu'une base de données est créée, elle est essentiellement clonée à partir du model
base de données système, et sur une toute nouvelle installation de SQL Server, les paramètres ANSI de la base de données seront OFF
, même si certains de ces paramètres (comme ANSI_NULLS
) sont des options que vous ne voudriez vraiment jamais voir OFF
pour toute application de base de données moderne. En fait, dans le cas de ANSI_NULLS
en particulier, la documentation précise que la possibilité de le désactiver est obsolète
, même s'il faudra encore attendre quelques années avant que ce ne soit vraiment le cas.
Et c'est là que réside le hic :ces paramètres sont toujours maintenus OFF
au profit des anciennes applications, qui devaient activer ces options ON
retour quand profiter de leur bonté (et des changements de rupture). Si la session ne spécifie aucune valeur pour eux, les paramètres de la base de données sont appliqués.
Mais la plupart des applications le font spécifiez ces paramètres dans une session, sinon explicitement, puis implicitement via leur bibliothèque d'accès aux données. Selon la documentation sur SET ANSI_DEFAULTS
, qui active plusieurs paramètres à la fois :
DB-Library est une ancienne bibliothèque d'accès qui est néanmoins encore utilisée par certaines applications anciennes et éventuellement comme source de sauvegarde pour des choses comme FreeTDS, donc de temps en temps, vous pouvez toujours tomber sur une application qui utilise délibérément ou accidentellement les paramètres de la base de données, mais cela est de plus en plus rare.
Quant au meilleur valeur pour ces options, cela dépend entièrement de votre cas d'utilisation. Si vous devez prendre en charge d'anciennes applications qui attendent un comportement ancien, vous n'aurez peut-être pas le choix de laisser les paramètres de la base de données sur OFF
. Si vous avez une application qui se connecte via une ancienne bibliothèque mais attend vraiment une sémantique SQL moderne, vous pouvez les activer ON
. Pour toutes les autres applications, ces options sont probablement déjà définies session par session sur leurs valeurs (in)correctes par l'application elle-même et ce que vous configurez n'aura pas d'importance de toute façon.
Une discussion sur chaque option individuelle et sur le moment où vous souhaitez l'activer ON
ou OFF
dépasserait les limites d'une réponse raisonnable. Consultez la documentation sur chacun d'eux et formulez vos propres bonnes pratiques. Vous pouvez laisser des choses comme SET
exigences d'option pour les index sur les colonnes calculées
vous guider, ce qui nécessite un tas d'options pour être ON
avant même de pouvoir les créer (et ils sont généralement considérés comme une bonne chose à avoir).