SQL Server-Spalte-Namen die groß-und Kleinschreibung

Der DB ich benutze hat French_CI_AS Sortierung (CI stehen für groß-und Kleinschreibung), aber groß-und Kleinschreibung sowieso. Ich versuche zu verstehen, warum.

Der Grund, warum ich behaupten, diese ist, dass bulk-inserts mit einem 'GEGEBENEN' Fall setup fehl, aber Sie sind erfolgreich, mit einem 'Gegebenen' Fall setup.

Beispiel:

  • INSERT INTO SomeTable([GIVEN],[COLNAME]) VALUES ("value1", "value2") nicht, aber
  • INSERT INTO SomeTable([Given],[ColName]) VALUES ("value1", "value2") funktioniert.

BEARBEITEN
Gerade gesehen:

http://msdn.microsoft.com/en-us/library/ms190920.aspx

so, dass heißt, es sollte möglich sein, die änderung einer Spalte, die die Sortierung ohne Entleerung alle Daten und Neuerstellung der zugehörigen Tabelle?

Ich glaube, Sie brauchen, um zu veranschaulichen, mit einem einfachen (2 Spalte) Beispiel dafür, was funktioniert und was fehlschlägt. Ich denke, man könnte sagen INSERT INTO SomeTable([GIVEN],[COLNAME]) VALUES (...) scheitert aber INSERT INTO SomeTable([Given],[ColName]) VALUES (...) funktioniert. Wenn dem so ist, wird in einem sehr heiklen Bereich, der die Interaktion zwischen delimited identifiers (begrenzte Bezeichner (normalerweise case-sensitive) und Sortierungen (case-insensitive).
dein Beispiel ist genau das in Bezug auf mein problem.
Sie müssen unterscheiden zwischen dem, was in der Tabelle gespeichert ist (die Daten) und die gespeicherten Namen in den system-Katalog (meta-Daten). Wenn, wie Sie angeben, das problem mit dem Spalten-Namen (aber nicht die Daten selbst), dann werden Sie brauchen, um Forschung, ob die SQL-Spalte-Namen in einer Datenbank auf groß-und Kleinschreibung, wenn getrennt. Es kann auch davon abhängen, wie die CREATE TABLE-Anweisung geschrieben (waren die Namen abgegrenzt?). Normalerweise SQL ist case-insensitive-Spalte und Tabelle Namen; Sie konnte schreiben INSERT INTO SoMeTaBlE(GiVeN, cOlNaMe) VALUES("v1", "v2") und wenn die Namen waren nie getrennt, wäre es OK.
Leffler: Was bedeutet "getrennte" stehen denn hier...?
In Standard-SQL eine "delimited identifier" ist ein Spaltenname, Tabellenname, oder etwas ähnliches, eingeschlossen in doppelte Anführungszeichen, z.B. CREATE TABLE "table"(...). Sie werden verwendet, wenn die Namen sind Schlüsselwörter oder Zeichen enthalten (z.B. Leerzeichen) , werden in der Regel nicht zulässig in Bezeichnern. In SQL Server, begrenzte Bezeichner sind in eckige Klammern eingeschlossen: [GIVEN] etc. MySQL hingegen benutzt back-ticks für den gleichen job. Deshalb ist es wichtig, dass Sie zeigen uns, was Sie verwenden. Es gibt Arkane Teile auf SQL (und begrenzungsbezeichner Handhabung ist einer von Ihnen), aber wenn du foul von es, müssen Sie lernen.

InformationsquelleAutor Skippy Fastol | 2012-05-03

Schreibe einen Kommentar