Announcement

Collapse
No announcement yet.

Case-Sensitive Datenbankobjekte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Case-Sensitive Datenbankobjekte

    Hallo,


    hatte das Problem gehabt, dass beim Inserten in eine Tabelle von z.B. "TEST" und "test" eine PKey-Verletzung hervorbrachte. Nach einigem Forschen habe ich herausgefunden, dass man ein Collate setzen kann, um ein case-sensitives Verhalten zu erlangen, Datenbank- oder Spaltenweise (=Sortierung). Habe dann datenbankweit auf "LATIN1_GENERAL_CS_AS" gestellt, um die Datenbankinhalte casesensitiv zu bekommen.

    Das funktioniert soweit prima, jedoch habe ich mir einen anderen Bock geschossen, denn MS SQL verlangt nun auch, alle Datenbankobjekte (Tabellennamen, Spaltennamen, StoredProc-Parameter, ...) case-sensitiv zu formulieren (z.B. "select * from MEINE_TABELLE anstatt Meine_Tabelle") !!! Das bedeutet für mich, dass ich nun das gesamte Programm auf Herz und Nieren prüfen muss, wo eine Tabelle oder ein DB-Objekt gerade mal klein bzw. "falsch" geschrieben ist und darf alles korrigieren weil mir das Programm ja nun gleich um die Ohren fliegt wenn das der Fall ist (1,5 Mio Zeilen Quelltext) Bei Oracle und Firebird funktioniert das hingegen ja wunderbar. Ferner muss ich unseren Service beibrigen, dass man nur bei MS SQL die Statements immer "richtig" schreiben muss ^^. Ich verstehe auch nicht, welchen Sinn es macht, Datenbankobjekte case-sensitiv mit den Inhalten über einen Kamm zu scheren ohne das zu differentieren. Die Nachteile überwiegen ganz klar meiner Meinung nach.

    Kurz: gibt es eine Möglichkeit, die Datenbankinhalte CASESENSITIV - die Datenbankobjekte aber hingegen CASEINSENSITIV zu behandeln? Vielleicht ein kleines Häkchen bei der DB-Konfiguration? *hoff*

    Grüße,
    Patrick

  • #2
    *Hoffnung zerstör*. Ist halt so bei MS das wenn du Case-Sensitiv einstellst wirklich auch alles Case-Sensitive behandelst. Du kannst aber bei MS SQL ab Version 2000 für jede Datenbank das verhalten gesondert einstellen.

    Wir haben auch 1,5 Mio. Quellzeilen und mit passenden Aufteilung(Bridge-Pattern) ist der MS SQL-Server Teil in 1 Unit mit 2.000 Zeilen verpackt und dort wird bei jeder Tabellename vor Zusammenbeau der Queries auf Groß/Kleinschreibung geachtet.

    Comment


    • #3
      Auch wenn es schon ein weilchen her ist, vielleicht brauch es ja mal wer

      Versuch mal folgenden Zeichensatz:

      Code:
      ALTER DATABASE [master] COLLATE Compatibility_51_409_30001
      Dieser läßt sich leider nicht im SQL Server Management Studio einstellen.
      Nur per Script.

      Comment


      • #4
        Danke für den Hinweis. Allerdings steht das hier dazu bei MS:

        Kompatibilitätssortierungen werden nur für Datenbanken verwandt, die von einem Microsoft SQL Server 7.0-Server oder einem Microsoft SQL Server 6.5-Server aktualisiert worden sind, der über eine Kombination von Codeseite, Sortierreihenfolge, die nicht unterstützt wird, oder Unicodesortierungen den beliebigen SQL Server- oder den beliebigen Windows-Standardsortierungen, die nicht unterstützt werden, verfügte, der über eine Kombination von Codeseite, Sortierreihenfolge, die nicht unterstützt wird, oder Unicodesortierungen, die nicht unterstützt werden, verfügte.
        Werds trotzdem mal ausprobieren :-)

        Grüße

        Comment


        • #5
          Tja, man sollte doch lieber alles ausprobieren: einer Datenbank mit Standardsortierung caseInsensitive ist im SQL-Statement Groß/Kleinschreibung bei den Objektnamen egal, ich kann aber trotzdem beim Erstellen einer Tabelle bei jeden Zeichenfeld eine andere Sortierung als den Standard angeben. Nehme ich dann eine caseSensitive, dann kann ich damit ein PK-Feld anlegen, in dem "Test" und "TEST" unterschiedlich, "Test" und "Test" aber gleich sind, eine Abfrage aber trotzdem ohne Berücksichtigung der Groß-Kleinschreibung bei der Angabe des Tabellen-/Spaltennamens funktioniert!

          bye,
          Helmut

          Comment

          Working...
          X