Самый эффективный способ сохранить файл размером 20 мегабайт в столбце IMAGE SQL Server 2005 - PullRequest
3 голосов
/ 31 июля 2009

Мы храним документы в таблице базы данных SQL Server 2005 с форматом столбца «Изображение».

Каждый раз, когда я пытаюсь сохранить файл PDF, размер которого превышает 1 Мег, он как-то повреждается.

Существует ли какой-либо особенно эффективный метод в .NET для сериализации и хранения больших файлов (~ 10 мегабайт) в базе данных?

[Изменить] Microsoft на самом деле говорит, что максимальный размер файла составляет около 2G Двоичные данные переменной длины от 0 до 2 ^ 31-1 (2 147 483 647) байтов. http://msdn.microsoft.com/en-us/library/ms187993.aspx

Ответы [ 4 ]

8 голосов
/ 31 июля 2009

Не имеет ли больше смысла хранить файл в файловой системе и хранить ссылку на файл в базе данных? хранение 20 МБ файлов в базе данных звучит так, как будто это может вызвать проблемы с производительностью.

3 голосов
/ 31 июля 2009

Следуйте подходу, ориентированному на документы, и не храните документы, такие как pdf и изображения, в базе данных, в конечном итоге вам придется реорганизовать их, когда вы начнете видеть все виды проблем с производительностью в вашей базе данных. Просто сохраните файл в файловой системе и укажите путь в таблице вашей базы данных.

однако, возможно, вы уже имеете дело с этой проблемой, так что взгляните на эту статью.

http://chiragrdarji.wordpress.com/2007/08/31/storing-and-retrieving-docpdfxls-files-in-sql-server/

Это объясняет, что максимальный предел varbinarary от 2 до 31 байта - это то, что вы можете хранить в SQL Server 2005.

2 голосов
/ 31 июля 2009

Разве вы не должны использовать VARBINARY(Max) для больших двоичных данных в SQL Server 2005?

2 голосов
/ 31 июля 2009

Быстрое решение, если вы не хотите реорганизовывать ваши документы из БД на данный момент, - это использовать сжатие ваших данных:

http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

Я сомневаюсь, что Sql Server портит ваши файлы, но работа с алгоритмом gzip может помочь вам найти ошибку.

...