Announcement

Collapse
No announcement yet.

Varchar(MAX) bietet zu wenig platz

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

  • Varchar(MAX) bietet zu wenig platz

    Hallo Forum,

    ich habe auf meiner Datenbank eine Splate "Verlauf, varchar(max)", welche i.d.R. sehr viele Zeichen fasst. Varchar(max) bietet mir da "nur" Platz für 4000 Zeichen, was jedoch unter Umständen zu wenig ist. Gibt es eine möglichkeit das Fassungsvermögen der Spalte zu vergrößern?

    Grüße, Sebbi

  • #2
    Hallo,

    Bist du dir sicher, dass es nur 4000 Zeichen sind?
    Laut meinen Erfahrungen und der MSDN Seite bietet VARCHAR(MAX) um einiges mehr Platz [2^31-1 Bytes]

    http://msdn2.microsoft.com/de-de/library/ms143432.aspx
    *-- robert.oh. --*

    Comment


    • #3
      Ja, aber es sind nicht 4000 Zeichen sondern 8060 Bytes die beim MS SQL Server eine Datenbank-"Zeile" mit "normalen" Feldern belegen darf. Hierzu zählen neben (n)varchars integer, bit, ....

      Was nicht dazu zählt sind Blob-Basierente Feldtypen wie auch das (n)text darstellt.

      Also wenn du mehr Platz für deinen Text benötigst nehme ein (n)text-Feld. Diese Fehler haben jedoch einschränkungen bezüglich des verwendeten SQL-Befehlssatzes.

      Comment


      • #4
        Hallo zusammen,

        ich meine, Robert hat Recht! Genau deshalb wurde ja der neue Datentyp eingeführt, weil das Handling mit [Text] so etwas "merkwürdig" war:
        HTML Code:
        declare 
        	@a varchar(max)
        	, @b varchar(max)
        	, @c varchar(max)
        --
        Create Table #bla (blub varchar(max))
        --
        set @a = replicate('X', 10000)
        set @b = replicate('Y', 10000)
        set @c = @a + @b
        insert into #bla values (@c)
        --
        select blub, len(blub), datalength(blub), right(blub, 10)
        from #bla
        --
        drop table #bla
        Man sieht, dass am Ende wirklich "Y" steht und die Datenlänge über 8000 Zeichen ist. Allerdings erkennt man hier auch, dass die Funktion "replicate" trotz Parameter 10000 offensichtlich nur 8000 Zeichen zurück gibt. Da muss man also etwas aufpassen, aber prinzipiell kann man mehr als 8000 Zeichen benutzen.

        Viele Grüße
        Olaf

        Comment


        • #5
          Danke für eure Antworten.

          Habe bemerkt, dass es nicht am Datenbankfeld zu liegen scheint. Ich kann nämlich über das Management-Studio noch Text anhängen an die "Volle"-Spalte. Der Fehler muss beim Update-Statement liegen, dass aus .NET herauskommt. Es werden nur maximal 1024 Zeichen geupdatet, der rest einfach verworfen. Auch im DataSet-Designer ist alles richtig eingestellt und ich habe dort sogar mal einen Manuellen Update-Command angefügt, damit habe ich jedoch das gleiche Problem. Echt ne komische Sache.

          Grüße, Sebbi

          Comment


          • #6
            Hallo,

            Es werden nur maximal 1024 Zeichen geupdatet, der rest einfach verworfen.
            welcher Datentyp mit welcher Feldbreite wird für den Parameter von SqlCommand verwendet?

            Comment

            Working...
            X