3 Stimmen

Bedeutet Sqlserver Kollation, dass Spaltennamen die richtige Groß- und Kleinschreibung haben müssen? Und wie kann man damit umgehen?

Ist es in SQL Server (2000 oder 2005) möglich, die Datenbank- oder Serversortierung so einzustellen, dass Bezeichnernamen (Tabellen, Spalten usw.) in der richtigen Groß-/Kleinschreibung angegeben werden müssen? Wenn ja, gilt das für alle Sortierungen, die Groß- und Kleinschreibung berücksichtigen, oder ist das eine separate Einstellung? (Ich dachte immer, Groß- und Kleinschreibung würde sich auf Daten beziehen, nicht auf Objektnamen).

Vermutlich würde dies eine Anwendung brechen, wenn seine gespeicherten procs und Abfragen nicht mit konsistenten Fall geschrieben wurden? Gibt es eine Möglichkeit, damit umzugehen, ohne sicherzustellen, dass alle Abfragen die korrekte Groß-/Kleinschreibung verwenden, z. B. durch Einstellen der Sortierung einer Datenbankverbindung?

Ich betrachte dies unter dem Gesichtspunkt, dass ich eine bestehende Anwendung habe, die wahrscheinlich inkonsistenten SQL-Code enthält, und ich möchte in der Lage sein, sie gegen Datenbanken mit unterschiedlichen Kollationen laufen zu lassen. Welche Einstellungen müsste ich vornehmen bzw. welche Datenbank-/Server-Kollationen könnte ich nicht verwenden?

2voto

DevinB Punkte 8160

Die Sortierung bestimmt, ob bei Ihren Abfragen die Groß- und Kleinschreibung nicht beachtet wird. Der einzige Weg, um sicherzustellen, dass Ihr Schema in mehreren Umgebungen funktioniert, ist die Unterscheidung der Groß- und Kleinschreibung in Ihren Abfragen. Wenn Ihre Abfragen nicht konsistent sind, MUSS Ihre Sortierung die Groß-/Kleinschreibung nicht berücksichtigen, da sie sonst nicht funktionieren wird.

http://msdn.microsoft.com/en-us/library/aa174903(SQL.80).aspx

Zu beachten ist, dass Sie, sobald Sie Ihre SQL Server-Umgebung mit einer bestimmten Sortierung eingerichtet haben, diese NICHT mehr ändern können, ohne eine NEUE SQL Server-Instanz zu erstellen. Daher ist die Groß-/Kleinschreibung in der Regel der richtige Weg. Und bemühen Sie sich dann um Konsistenz in Ihren Abfragen.

Sobald eine Sortierung festgelegt ist, gilt sie sowohl für Daten als auch für Metadaten, glaube ich.

1voto

Steve Jones Punkte 148

In früheren Versionen von SQL Server wird die Sortierung festgelegt, aber ab 2005 können Sie sie für jedes Objekt ändern, wenn es erstellt wird.

1voto

Cade Roux Punkte 85601

Die Standard-Sortierreihenfolge der Datenbank bestimmt, ob Objekte in der Datenbank in Abfragen unter Berücksichtigung der Groß- und Kleinschreibung behandelt werden - dies gilt für alle Objektnamen: Tabellen, Spalten usw.

Wenn Ihr Anwendungscode aus einer Datenbank mit Groß-/Kleinschreibung kommt, läuft er möglicherweise nicht auf einer Datenbank mit Groß-/Kleinschreibung, wenn ein Objekt falsch referenziert wird (Sie würden eine Meldung erhalten, wenn Sie versuchen, die Anweisung auszuführen oder die gespeicherte Prozedur zu erstellen, oder in einer Architektur mit gespeicherten Prozeduren würden Sie all dies ziemlich schnell erkennen, es sei denn, Sie haben eine große Menge an dynamischem SQL).

Denken Sie daran, dass, auch wenn Ihr Code läuft, einzelne Spalten mit Sortierungen gesetzt werden können, die sich von denen der Datenbank unterscheiden, so dass es immer möglich ist, dass sich Ihr Code bei einer abweichenden Sortierung unerwartet verhält (zum Beispiel verhält sich GROUP BY anders).

0voto

Steve Jones Punkte 148

Sie können die Sortierreihenfolge für jedes Objekt festlegen und eine Standardeinstellung für die Datenbank und den Server festlegen.

Wie geht man damit um? Sie müssen hier Standards durchsetzen. Man kann sich leicht mit verschiedenen Leuten verheddern, die mit verschiedenen Fällen schreiben.

Die Sortierung gilt auch für Daten, also "bob" != "Bob"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X