Announcement

Collapse
No announcement yet.

Temporätabellen

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

  • Temporätabellen

    Hallo zusammen,

    habe mal wieder eine Frage.

    Wie kann ich es unterbinden, wenn ich eine Query erstelle

    "Select x,y,t Into Test1 From Test2 "

    dass in der neuen Tabelle die Felder nur so aufgebaut werden, aber die Einschränkungen nicht gelten, oder besser noch die Defaultwerte verwendet werden.

    Ich hatte das nämlich heute in einer komischen Situation. Ich habe eine Datenbank von SQL 2000 auf SQL 2005 gebracht. Auf dem 2000 Server kam mit beim Start eines Programmpunkts kein Fehler, auf dem SQL 2005 allerdings schon. Mir ist nun eben aufgefallenm dass es daran liegt dass ich ein paar Werte in die Temporätabelle schreibe. Auf dem 2000er meckert dass bestimmte Werte nicht Null sein sürfen, in 2005 jetzt schon. Kann man das irgendwie steuern ?

    Es ist nämlich so, dass manchmal wäre diese Funktion ja fein, aber manchmal ist sie eben störend.

    Bin für jede Hilfe dankbar

    lg

    Klaus

  • #2
    Hallo,

    Ich habe eine Datenbank von SQL 2000 auf SQL 2005 gebracht.
    wenn auf dem MS SQL Server 2000 ein Backup der Datenbank angelegt wird und dieses Backup danach auf dem MS SQL Server 2005 wiederhergestellt wird, liegt die Datenbank als 100%-Kopie auf dem neuen Server vor. Beim Wiederherstellen eines 2000er-Backups setzt der SQL Server 2005 zudem automatisch den Kompatibilitätsgrad auf SQL Server 2000 (80), so dass sich die Datenbank exakt so verhält wie vorher.

    Die Technik "Select x,y,t Into Test1 From Test2 " war niemals dazu gedacht, eine völlig identische Zieltabelle anzulegen. Die Zieltabelle hat nur die Struktur, die für die Speicherung der aktuellen Ergebnismenge benötigt wird. Wenn die Tabelle Test1 alle Eigenschaften von Test2 haben soll, muss die Tabellenstruktur vor dem Befüllen über CREATE TABLE angelegt werden.

    Comment


    • #3
      Sehr geehrter Herr Kosch,

      vielen Dank für die Antwort. Aber genau das ist das Problem, wo ich zwischen SQL 2000 und SQL 2005 unterschiede bemerkt habe.

      Auf dem SQL2000 war es im nach dem insert Into egal, ob die felder Null zuließen oder nicht, auf dem SQL 2005 kontrolliert er nun dies.

      mfg

      Astner Klaus

      Comment


      • #4
        Hallo,

        nun, das nennt man dann wohl "technischen Fortschritt". Man muss mit jedem Service Pack damit rechnen, dass sich im Detail die Voreinstellungen ändern. Ein gutes Beispiel ist die CREATE TABLE-Anweisungen, bei der für jede Spalte entweder NULL oder NOT NULL angegeben werden kann. Lässt man diese Angabe weg, greift die Voreinstellung der aktuellen SQL Server-Installation. Wenn dann ein Dritter (oder ein Service Pack) die korrespondierende SET-Option ändert, funktioniert das ungeänderte SQL-Script auf einen Schlag nicht mehr.

        Aus diesem Grund (... "erhobener Zeigefinger..") wird uns immer geraten, alle Deklarationen explizit vorzunehmen. Denn nur dann kommt uns im Alltag eine geänderte Voreinstellung nicht unerwartet in die Quere.

        Comment

        Working...
        X