AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datein in MS SQL speichern

Ein Thema von Andidreas · begonnen am 12. Sep 2013 · letzter Beitrag vom 13. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Datein in MS SQL speichern

  Alt 12. Sep 2013, 13:06
Datenbank: MS SQL Server • Version: 2008 • Zugriff über: UniDac
Hallo zusammen,

ich beschäftige mich gerade damit wie man Dateien (PDF, CSV, XLSX, usw.) in einer MS SQL Datenbank speichert.

Bis jetzt habe ich nur einen Weg gefunden, nämlich die Verwendung eines varbinary(max) Feldes.
In diesem Falle werden die Dateien nicht in der Tabelle direkt gespeichert, sondern im NTFS.

Gibt es bei einer MS SQL Datenbank auch die möglichkeit die Daten direkt in einer Tabelle mit zu speichern, ohne das etwas im NTFS gespeichert wird?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 13:13
Ja nennt sich BLOB.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 13:23
Ist das dann der Feldtyp "BLOB"?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 13:42
Bis jetzt habe ich nur einen Weg gefunden, nämlich die Verwendung eines varbinary(max) Feldes.
In diesem Falle werden die Dateien nicht in der Tabelle direkt gespeichert, sondern im NTFS.
Soweit ich weiß, wird ein varbinary(max) Feld genauso in der Datenbank gespeichert, wie jedes andere Feld. Als separate Datei wird es nur dann abgelegt, wenn du FILESTREAM varbinary(max) nimmst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 13:50
ich beschäftige mich gerade damit wie man Dateien (PDF, CSV, XLSX, usw.) in einer MS SQL Datenbank speichert.

Bis jetzt habe ich nur einen Weg gefunden, nämlich die Verwendung eines varbinary(max) Feldes.
In diesem Falle werden die Dateien nicht in der Tabelle direkt gespeichert, sondern im NTFS.
Hä? Das wäre mir neu. ein BLOB (varbinary(max) speichert die Daten nur nicht direkt in der row sondern in einem speziellen DB/Tabellenbereich der nicht der 8060-Byte maximale Zeilengröße des MS SQL-Server unterliegt. Der neue Typ varbinary(max) hat gegenüber dem alten Typ (n)text einige Vorteile was Performance und diverse SQL-Möglichkeiten betrifft.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 14:00
Ich merke gerade das ich das Falsch verstanden habe...

Es ist so wie Uwe Raabe es sagt...
Mit dem Attribut "Filestream" speicher ich es im NTFS, ohne in der DB...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 14:14
Soweit ich weiß, wird ein varbinary(max) Feld genauso in der Datenbank gespeichert, wie jedes andere Feld. Als separate Datei wird es nur dann abgelegt, wenn du FILESTREAM varbinary(max) nimmst.
Gilt doch erst ab SQL 2012, oder?

Ein BLOB (varbinary(max) speichert die Daten nur nicht direkt in der row sondern in einem speziellen DB/Tabellenbereich
Das ist korrekt, aber da das vollkommen transparent geschieht, ist es 'eigentlich' so, als ob die Daten in der Spalte stehen.

Zitat:
...der 8060-Byte maximale Zeilengröße des MS SQL-Server...
Das ist so nicht ganz korrekt. Die Grenze gilt für fixe Größen (also auch nicht für VARCHAR).
Zitat von MSDN:
SQL Server supports row-overflow storage which enables variable length columns to be pushed off-row. Only a 24-byte root is stored in the main record for variable length columns pushed out of row; because of this, the effective row limit is higher than in previous releases of SQL Server. For more information, see the "Row-Overflow Data Exceeding 8 KB" topic in SQL Server Books Online.
Gilt seit mindestens SQL 2005.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 14:49
Zitat:
...der 8060-Byte maximale Zeilengröße des MS SQL-Server...
Das ist so nicht ganz korrekt. Die Grenze gilt für fixe Größen (also auch nicht für VARCHAR).
Das sagen mir die Fehlermeldungen die ich schon gesehen habe was anderes.
Der unterschied zwischen varchar und char ist nur das der String nicht mit leerzeichen gefüllt wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 14:59
Ich hab leider noch kein Beispiel gefunden das mir verständlich erklärt wie ich eine Datei in die MS SQL Spalte bekommen...
Habt Ihr ein solches Beispiel?

Btw. das Filestream Attribut gibt es glaub ab SQL Server Version 2008...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#10

AW: Datein in MS SQL speichern

  Alt 12. Sep 2013, 16:39
Ich weiß jetzt nicht, ob es das schon in XE gab, aber in XE3 hat ein TBlobField eine Methode LoadFromFile .
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz