sql >> Base de Datos >  >> RDS >> Sqlserver

Las mejores opciones de ANSI al crear una nueva base de datos

Las opciones están predeterminadas en OFF porque, con toda probabilidad, esta base de datos se creó y escribió sin tocar ninguno de los valores predeterminados. Cuando se crea una base de datos, esencialmente se clona a partir del model base de datos del sistema, y ​​en una nueva instalación de SQL Server, la configuración ANSI en la base de datos será OFF , aunque algunas de estas configuraciones (como ANSI_NULLS ) son opciones que nunca querrías tener OFF para cualquier aplicación de base de datos moderna. De hecho, en el caso de ANSI_NULLS en particular, la documentación especifica que la capacidad de apagarlo está obsoleta , aunque es probable que aún pasen algunos años antes de que ese sea realmente el caso.

Y ahí radica el problema:estas configuraciones aún se mantienen OFF en beneficio de las aplicaciones antiguas, que tenían que activar estas opciones ON Hace mucho tiempo cuando se benefician de sus bondades (y rompen cambios). Si la sesión no especifica valores para ellos, se aplica la configuración de la base de datos.

Pero la mayoría de las aplicaciones lo hacen especifique estas configuraciones en una sesión, si no explícitamente, implícitamente a través de su biblioteca de acceso a datos. Según la documentación en SET ANSI_DEFAULTS , que alterna un montón de configuraciones a la vez:

DB-Library es una biblioteca de acceso antigua que, sin embargo, aún utilizan algunas aplicaciones antiguas y, opcionalmente, como fuente de respaldo para cosas como FreeTDS, por lo que de vez en cuando aún puede encontrarse con una aplicación que deliberada o accidentalmente usa la configuración de la base de datos, pero esto es cada vez más raro.

En cuanto a los mejores valor para estas opciones, que depende completamente de su caso de uso. Si debe admitir aplicaciones antiguas que esperan un comportamiento antiguo, es posible que no tenga más remedio que dejar la configuración de la base de datos en OFF . Si tiene una aplicación que se conecta a través de una biblioteca antigua pero realmente espera una semántica SQL moderna, es posible que desee activarla ON . Para todas las demás aplicaciones, es probable que estas opciones ya estén configuradas por sesión en sus valores (in)correctos por la propia aplicación y lo que configure no importará de todos modos.

Una discusión sobre cada opción individual y cuándo desearía activarla ON o OFF excedería los límites de una respuesta razonable. Consulte la documentación de cada uno de ellos y formule sus propias mejores prácticas. Puede dejar cosas como SET requisitos de opción para índices en columnas calculadas guiarlo, que requiere un montón de opciones para estar ON antes de que puedas crearlos (y generalmente se consideran algo agradable).