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

Bedste ANSI-muligheder ved oprettelse af en ny database

Indstillingerne er som standard OFF fordi denne database efter al sandsynlighed blev oprettet og scriptet uden at berøre nogen af ​​standardindstillingerne. Når en database oprettes, er den i det væsentlige klonet fra model systemdatabase, og på en helt ny installation af SQL Server vil ANSI-indstillingerne på databasen være OFF , selvom nogle af disse indstillinger (såsom ANSI_NULLS ) er muligheder, du virkelig aldrig ville ønske skal være OFF til enhver moderne databaseapplikation. Faktisk i tilfælde af ANSI_NULLS Specielt specificerer dokumentationen, at muligheden for overhovedet at slå det fra er forældet , selvom der sandsynligvis stadig vil gå et par år, før det virkelig er tilfældet.

Og deri ligger problemet:Disse indstillinger holdes stadig OFF til fordel for gamle applikationer, som måtte slå disse muligheder ON langt tilbage, hvornår man kan drage fordel af deres godhed (og bryde ændringer). Hvis sessionen ikke angiver nogen værdier for dem, anvendes databaseindstillingerne.

Men de fleste programmer gør angiv disse indstillinger i en session, hvis ikke eksplicit, så implicit gennem deres dataadgangsbibliotek. I henhold til dokumentationen på SET ANSI_DEFAULTS , som skifter en masse indstillinger på én gang:

DB-Library er et gammelt adgangsbibliotek, som ikke desto mindre stadig bruges af nogle ældgamle applikationer og eventuelt som en backing-kilde til ting som FreeTDS, så en gang imellem kan du stadig løbe ind i et program, der bevidst eller ved et uheld bruger databaseindstillingerne, men dette er mere og mere sjældent.

Hvad angår det bedste værdien for disse muligheder, det afhænger helt af din brugssituation. Hvis du skal understøtte gamle applikationer, der forventer gammel adfærd, har du muligvis ikke noget valg ved at lade databaseindstillingerne være OFF . Hvis du har et program, der opretter forbindelse gennem et gammelt bibliotek, men som virkelig forventer moderne SQL-semantik, kan det være en god idé at slå dem ON . For alle andre applikationer er disse muligheder sandsynligvis allerede indstillet på per-session-basis til deres (u)korrekte værdier af selve applikationen, og det, du konfigurerer, betyder alligevel ikke noget.

En diskussion om hver enkelt mulighed, og hvornår du ønsker at slå den ON eller OFF ville overskride grænserne for et rimeligt svar. Se dokumentationen om hver af dem og formuler din egen bedste praksis. Du kan lade ting som f.eks. SET valgmuligheder for indekser på beregnede kolonner guide dig, som kræver en masse muligheder for at være ON før du overhovedet kan oprette dem (og de anses generelt for at være en god ting at have).




  1. MySQL> Tabel findes ikke. Men det gør det (eller det burde det)

  2. MySQL:vælg sidste hele 5 minutters interval

  3. Hvilken kommando(er) kører `heroku pgbackups:capture` på serveren for at udføre sikkerhedskopier?

  4. Hvordan angiver jeg "begyndelsen af ​​i dag" i en bestemt tidszone?