Announcement

Collapse
No announcement yet.

Timeout bei vergrößern eines nvarchar

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

  • Timeout bei vergrößern eines nvarchar

    Moin allerseits,

    habe folgendes Problem. Ich möchte im MS SQL Server Management Studio in einer Tabelle einen nvarchar von 50 auf 500 vergrößern. In der Kunden Tabelle funktioniert das auch einwandfrei. Wenn ich das allerdings in der natürlich volleren Rechnungstabelle versuche kommt ein Timeout:
    Anforderung-Tabelle
    - Tabelle kann nicht geändert werden.
    Timeout ist abgelaufen. Das Zeitlimit wurde vor dem Beenden des Vorgangs überschritten oder der Server reagiert nicht.
    ===================================

    Vorgang durch Benutzer im Dialog "Speichern" abgebrochen.
    (MS Visual Database Tools)

    ------------------------------
    Speicherort des Programms:

    bei Microsoft.VisualStudio.DataTools.Interop.IDTDocToo l.Save(Object dsRef, String path, Boolean okToOverwrite)
    bei Microsoft.SqlServer.Management.UI.VSIntegration.Ed itors.VsDataDesignerNode.Save(VSSAVEFLAGS dwSave, String strSilentSaveAsName, IVsUIShell pIVsUIShell, IntPtr punkDocDataIntPtr, String& strMkDocumentNew, Int32& pfCanceled)



    Was mach ich falsch, oder was kann ich anders machen, damit das geht..
    Danke schon mal im voraus für Eure Hilfe!

  • #2
    Ich würde es so machen (wenn es keine Mastertable mit PK's für andere ist):
    Datenbank (falls erforderlich) in den single-user-mode setzen
    tabelle in hilfstabelle kopieren (select * into hilfstabelle from tabelle)
    alle Indizes der Tabelle deaktivieren (alter index all on tabelle disable)
    Daten in tabelle löschen (truncate oder delete)
    Datenbankfeld vergrößern
    Daten aus hilfstabelle rückkopieren
    indizes aktivieren
    single-user-mode auf multi-user umstellen

    bye,
    Helmut

    Comment


    • #3
      [HighLIGHT="SQL"]ALTER TABLE Tabelle ALTER COLUMN Spalte NewType[/HighLIGHT]
      über SSMS müsste eigentlich reichen,
      wenn wie Helmut sagt
      keine Indexe, Defaults und Checks auf der Spalte vorhanden sind,
      Falls doch, diede vorher entfernen und nachher wiederherstellen
      (Ob das deaktivieren der Indexe ausreicht, weiß ich nicht, da ich die immer lösche und danach neu erstelle)

      Comment


      • #4
        Danke für die Antworten!

        Leider komm ich so noch nicht weiter, da es sich ja um die Rechungstabelle handelt, und die ist Mastertabelle der Verkauftenartikeltabelle, also mit PKs..

        Was kann ich jetzt machen?

        Comment


        • #5
          Na ja, da wird wohl nichts anderes übrigbleiben, als ein DROP der Fremdschlüssel zu machen und diese am Ende wieder neu zu erstellen.

          bye,
          Helmut

          PS: eigentlich wundert mich das Problem etwas, da man ja im SSMS einstellen kann, dass das Tool unendlich lange warten soll, da dürfte es also kein Timeout geben.

          Comment


          • #6
            Hi,

            also, eigentlich ist das überhaupt komisch, dass hier abgebrochen wird. Bei mir laufen deratige Aktionen durchaus auch mal mehrere Minuten ohne Probleme.

            Ist das betroffene Feld selbst irgendwie mit Indizes oder gar Fremdschlüsseln behaftet? Als Varchar(50) wohl eher nicht. Falls doch, würde ich mir mal das Änderungs - Script vom Managementstudio erstellen lassen und anschauen.

            Falls nicht, wäre es vielleicht ein Versuch mit dieser Sequenz (auch um die eigentliche Ursache einzugrenzen)

            1) ein neues dummy - Feld Varchar(50) anlegen
            2) die Daten aus dem fraglichen Feld dahin kopieren
            3) das Originalfeld droppen und mit neuer Größe wieder anlegen
            4) die Daten aus dem Dummyfel kopierem und das dann wieder entfernen

            Selbstvertständlich sollten keine weiteren Benutzer mehr auf der Datenbank angemeldet sein.

            Eventuell hilft auch die Aktivitätsmonitor, Blockierungen zu erkennen.

            Wie gesagt, imho müßter der Server solche Änderung eigentlich abkönnen.

            Viel Erfolg
            Tino
            Ich habs gleich!
            ... sagte der Programmierer.

            Comment


            • #7
              DAAAANKE!

              Hat geklappt, ich hab ein neues Feld mit der passenden Größe angelegt alle daten rüberkopiert und dann das alte feld gelöscht und das neue umbenannt jetzt ist alles toll!!! Die Rechenzeit für alle sachen zusammen keine 10 Sec, nur das vergrößern hatte immer nach 30 Sec abgebrochen, warum auch immer, aber jetzt ist alles gut und ich bin glücklich! Danke allen für eure hilfe!!!

              Manchmal muss man eben um die Ecke denken, danke tinof!

              Comment

              Working...
              X