none
Bilder in SQL Server speichern RRS feed

  • Frage

  • kurz vor dem Jahresende packt mich noch einmal der Arbeitseifer. Ich möchte über ein PHP Skript Bilder in einen SQL Server laden. Also die binären Daten abspeichern. Jedoch lese ich immer das varbinary(max) nur 8000 Byte abspeichern kann.

    https://msdn.microsoft.com/de-de/library/ms188362(v=sql.120).aspx

    Wenn das stimmt wäre ich ja auf nicht mal 1MB beschränkt. Das kann doch nicht der Weisheit letzter Schluss sein oder?

    Gibt es hier noch eine andere Möglichkeit oder habe ich was falsch verstanden? 

    Mittwoch, 30. Dezember 2015 05:37

Antworten

Alle Antworten

  • Hallo Toot,

    nein da ist dir ein kleiner Fehler unterlaufen. varbinary() kann entweder n(1 bis 8000) Byte sein oder aber (max) was 2^31-1 Byte entspricht (2.147.483.648 Byte).

    Binärdaten mit variabler Länge. n muss ein Wert zwischen 1 und 8.000 sein. max gibt an, dass die maximale Speichergröße 2^31-1 Byte beträgt.

    Benjamin Hoch
    MCSE: Data Platform,
    MCSA: Windows Server 2012,


    Mittwoch, 30. Dezember 2015 06:37
  • Hallo Toot_Braunstein

    Ich habe selbst bereits Daten > 1 MB in SQL gespeichert.

    Selbst in dem von dir geposteten Link steht:
    <sentencetext xmlns="http://www.w3.org/1999/xhtml">Verwenden Sie varbinary(max), wenn die Spaltendateneinträge 8.000 Byte überschreiten.</sentencetext>  

    Welche Fehlermeldung bekommst du denn?

    Grüße
    Sascha

    Mittwoch, 30. Dezember 2015 06:41
  • Hi,

    so ganz generell solltest Du dir zweimal überlegen, ob Du Dateien (egal, ob Bilder, Dokumente, ...) wirklich in eine Datenbank speichern willst. Ich persönlich vermeide das, wo es nur geht, da es in der Regel mehr Probleme macht als es eine Unterstützung wäre. Angefangen vom extremen Aufblähen der Datenbank (was dann u.U. auch bei der Datenbanksicherung, ... Nachteile mit sich bringt) über die Abfrageperformance gibt es eigentlich überwiegend nur Nachteile.

    Daher die Frage: Warum willst Du das machen?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 30. Dezember 2015 17:53
    Moderator
  • Hallo Benjamin danke für deine Hilfe! Da habe ich entscheidende Faktoren überlesen.

    @Stefan:

    ja ich gebe dir recht ich bin eigentlich auch kein Fan von Speicher von Bildern oder anderen Binärdaten in der Datenbank. Aber was will ich anderes Tun? Der Trend scheint dahin zu gehen und immer mehr Anbieter nutzen diese Technik.

    Deswegen wollte ich mich mal damit vertraut machen und mir mal anschauen was damit machbar ist.

    Wie würdest du vorgehen?

    Mein Ziel ist es diverse Bilder eindeutig zugeordnet abzuspeichern. Man könnte hier den Pfad abspeichern wo die Datei abgelegt wird. Also so zusagen ein Filesystem und in der DB der eindeutige Pfad zur Datei. Das ist sicher auch jener Weg den du vorschlagen würdest oder?

    Für Kritik oder Verbesserung bin ich offen. Bin selber noch am Anfang mit der Materie.

    Mittwoch, 30. Dezember 2015 19:31
  • Hi,

    wenn Du das so machen willst, solltest Du dir ggfs. mal FileTables anschauen. Siehe dazu:

      http://www.insidesql.org/blogs/falkkrahl/2011/10/30/sql-server-2012-neue-funktionen

      https://visualstudiomagazine.com/articles/2012/10/25/using-filetables-in-sql-2012.aspx

      https://msdn.microsoft.com/de-de/library/ff929144.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 30. Dezember 2015 19:42
    Moderator
  • Hallo,

    Wenn deine Frage beantwortet ist markiere bitte die entsprechenden Posts als Antwort.

    Gruß Benjamin


    Benjamin Hoch
    MCSE: Data Platform,
    MCSA: Windows Server 2012,

    Freitag, 15. Januar 2016 08:08