Speichern von Dateien in SQL Server
Es ist eine alte Frage, ich weiß, aber mit SQL-Server 2012 ist es endlich ok zum speichern von Dateien in der Datenbank, oder sollten Sie wirklich gehalten werden, in das Dateisystem mit nur Verweise darauf in die Datenbank?
Wenn Ihre Speicherung in der Datenbank wird als akzeptabel in diesen Tagen, was ist der effektivste Weg, es zu tun?
Ich Plane zur Verschlüsselung, so Schätze ich die Verarbeitung nicht blitzschnell.
Dank
InformationsquelleAutor der Frage CompanyDroneFromSector7G | 2012-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein wirklich gutes paper von Microsoft Research namens Blob-oder Nicht-Blob.
Ihren Abschluss, nachdem eine große Anzahl von performance-tests und-Analyse ist:
wenn Ihr Bilder oder Dokument sind in der Regel unterhalb von 256 KB in der Größe und speichert Sie in einer Datenbank VARBINARY-Spalte ist effizienter
wenn Ihr Bilder oder ein Dokument in der Regel über 1 MB groß, speichert Sie im Dateisystem wird effizienter (und mit SQL Server 2008 das FILESTREAM-Attribut, Sie sind immer noch unter der Transaktions-Kontrolle und Teil der Datenbank)
zwischen diesen beiden, es ist ein bisschen wie ein Wurf-up, je nach Ihrer Verwendung
Wenn Sie sich entscheiden, legen Sie Ihre Bilder in einer SQL Server-Tabelle, würde ich dringend empfehlen, mit einer separaten Tabelle zum speichern dieser Bilder - nicht die Mitarbeiter-Foto in der employee-Tabelle, halten Sie Sie in einer separaten Tabelle. So, die Tabelle Employee, kann schlank bleiben und gemein und sehr effizient, vorausgesetzt, Sie werden nicht immer müssen Sie die Mitarbeiter-Foto, auch als Teil der Abfragen.
Dateigruppen, check-out Dateien und Dateigruppen-Architektur für ein intro. Im Grunde, Sie würde entweder erstellen Sie Ihre Datenbank mit einer separaten Dateigruppe für große Daten-Strukturen von Anfang an, oder fügen Sie eine zusätzliche Dateigruppe später. Nennen wir es mal "LARGE_DATA".
Nun, wenn Sie haben eine neue Tabelle zu erstellen, die speichern muss, VARCHAR(MAX) oder VARBINARY(MAX) - Spalten, können Sie diese über Datei-Gruppe für die große Daten:
Check-out der MSDN-intro auf Dateigruppen, und spielen Sie mit ihm!
InformationsquelleAutor der Antwort marc_s
Gibt es noch keine einfache Antwort. Es hängt von Ihrem Szenario ab. MSDN hat die Dokumentation zu helfen, Sie entscheiden.
Gibt es andere Möglichkeiten, die hier behandelt werden. Statt der Speicherung im Dateisystem oder direkt in ein BLOB ist, können Sie mithilfe der FileStream-Datei oder Tabelle in SQL Server 2012. Die Vorteile von Datei-Tabelle scheinen, wie eine Nein-brainier (aber zugegeben, ich habe keine persönliche Erfahrung aus Erster hand mit Ihnen.)
Der Artikel ist es definitiv Wert, gelesen zu werden.
InformationsquelleAutor der Antwort David
Könnten Sie Lesen, auf FILESTREAM. Hier einige Infos von den docs, die Ihnen helfen sollen entscheiden:
InformationsquelleAutor der Antwort Tim Lehner