Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Le migliori opzioni ANSI durante la creazione di un nuovo database

Per impostazione predefinita, le opzioni sono OFF perché, con ogni probabilità, questo database è stato creato e sottoposto a script senza toccare nessuno dei valori predefiniti. Quando un database viene creato, viene essenzialmente clonato dal model database di sistema e su una nuova installazione di SQL Server le impostazioni ANSI sul database saranno OFF , anche se alcune di queste impostazioni (come ANSI_NULLS ) sono opzioni che non vorresti mai essere OFF per qualsiasi moderna applicazione di database. Infatti, nel caso di ANSI_NULLS in particolare, la documentazione specifica che la possibilità di disattivarlo del tutto è obsoleto , anche se probabilmente ci vorranno ancora alcuni anni prima che sia davvero così.

E qui sta il problema:queste impostazioni sono ancora mantenute OFF a beneficio delle vecchie applicazioni, che hanno dovuto attivare queste opzioni ON indietro nel tempo quando beneficiare della loro bontà (e dei cambiamenti di rottura). Se la sessione non specifica alcun valore per loro, vengono applicate le impostazioni del database.

Ma la maggior parte delle applicazioni fa specificare queste impostazioni in una sessione, se non in modo esplicito, quindi implicitamente tramite la relativa libreria di accesso ai dati. Secondo la documentazione su SET ANSI_DEFAULTS , che attiva un sacco di impostazioni contemporaneamente:

DB-Library è una vecchia libreria di accesso che è tuttavia ancora utilizzata da alcune applicazioni antiche e opzionalmente come fonte di supporto per cose come FreeTDS, quindi ogni tanto puoi ancora imbatterti in un'applicazione che utilizza deliberatamente o accidentalmente le impostazioni del database, ma questo è sempre più raro.

Quanto al migliore valore per queste opzioni, che dipende interamente dal tuo caso d'uso. Se devi supportare vecchie applicazioni che si aspettano un vecchio comportamento, potresti non avere scelta nel dover lasciare le impostazioni del database su OFF . Se hai un'applicazione che si connette tramite una vecchia libreria ma si aspetta davvero una semantica SQL moderna, potresti volerle attivare ON . Per tutte le altre applicazioni, è probabile che queste opzioni siano già impostate in base alla sessione sui loro valori (non) corretti dall'applicazione stessa e ciò che configuri non avrà comunque importanza.

Una discussione su ogni singola opzione e quando vorresti attivarla ON o OFF supererebbe i limiti di una risposta ragionevole. Consulta la documentazione su ciascuno di essi e formula le tue migliori pratiche. Puoi consentire cose come SET requisiti delle opzioni per gli indici su colonne calcolate guidarti, che richiedono un sacco di opzioni per essere ON prima ancora che tu possa crearli (e sono generalmente considerati una cosa carina da avere).