Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Beste ANSI-Optionen beim Erstellen einer neuen Datenbank

Die Optionen sind standardmäßig auf OFF eingestellt weil diese Datenbank aller Wahrscheinlichkeit nach erstellt und geschrieben wurde, ohne die Standardeinstellungen zu ändern. Wenn eine Datenbank erstellt wird, wird sie im Wesentlichen aus dem model geklont Systemdatenbank, und bei einer brandneuen Installation von SQL Server sind die ANSI-Einstellungen für die Datenbank OFF , obwohl einige dieser Einstellungen (wie ANSI_NULLS ) sind Optionen, die Sie niemals OFF haben möchten für jede moderne Datenbankanwendung. Tatsächlich im Fall von ANSI_NULLS insbesondere gibt die Dokumentation an, dass die Möglichkeit, es überhaupt auszuschalten, veraltet ist , obwohl es wahrscheinlich noch ein paar Jahre dauern wird, bis das wirklich der Fall ist.

Und darin liegt der Haken:Diese Einstellungen bleiben immer noch OFF zugunsten alter Anwendungen, die diese Optionen ON schalten mussten vor langer Zeit, als man von ihrer Güte (und bahnbrechenden Veränderungen) profitierte. Wenn die Sitzung keine Werte dafür angibt, werden die Datenbankeinstellungen angewendet.

Aber die meisten Anwendungen tun es Geben Sie diese Einstellungen in einer Sitzung an, wenn nicht explizit, dann implizit über ihre Datenzugriffsbibliothek. Gemäß der Dokumentation zu SET ANSI_DEFAULTS , das eine Reihe von Einstellungen gleichzeitig umschaltet:

DB-Library ist eine alte Zugriffsbibliothek, die dennoch immer noch von einigen alten Anwendungen und optional als Sicherungsquelle für Dinge wie FreeTDS verwendet wird, so dass Sie hin und wieder auf eine Anwendung stoßen können, die absichtlich oder versehentlich die Datenbankeinstellungen verwendet, aber diese wird immer seltener.

Was die Besten betrifft Wert für diese Optionen, das hängt ganz von Ihrem Anwendungsfall ab. Wenn Sie alte Anwendungen unterstützen müssen, die altes Verhalten erwarten, haben Sie möglicherweise keine Wahl, die Datenbankeinstellungen auf OFF zu belassen . Wenn Sie eine Anwendung haben, die eine Verbindung über eine alte Bibliothek herstellt, aber wirklich eine moderne SQL-Semantik erwartet, möchten Sie sie vielleicht ON schalten . Für alle anderen Anwendungen werden diese Optionen wahrscheinlich bereits von der Anwendung selbst auf Sitzungsbasis auf ihre (falschen) korrekten Werte gesetzt, und was Sie konfigurieren, spielt sowieso keine Rolle.

Eine Diskussion über jede einzelne Option und wann Sie sie ON einschalten möchten oder OFF würde die Grenzen einer vernünftigen Antwort überschreiten. Konsultieren Sie die Dokumentation zu jedem von ihnen und formulieren Sie Ihre eigenen Best Practices. Sie können Dinge wie den SET lassen Optionsanforderungen für Indizes auf berechneten Spalten führen Sie, die eine Reihe von Optionen erfordern, um ON zu sein bevor Sie sie überhaupt erstellen können (und sie werden im Allgemeinen als eine nette Sache angesehen).