Jassom Ответов: 1

Exaption при вставке VARBINARY данных с помощью хранимой процедуры


Привет..

У меня есть хранимая процедура, которую я использую для хранения varbinary данные, так что если файл мал почти от 50 МБ до 150 МБ, он работает нормально, но проблема в том, что когда я пытаюсь хранить больше 300 мб, он не работает и показывает сообщение::
Цитата:
Тайм-аут истек. Время ожидания истекло до завершения операции или сервер не отвечает.

Хранимая процедура такова:
PROCEDURE AddData
    @FileContent varbinary(MAX)
AS
    INSERT INTO [AttachmentTable] 
    (
        [ContentFile]
    )
    VALUES 
    (
        @FileContent
    )

Параметр send from c# as byte[]

Что я могу сделать, чтобы решить эту проблему?

Заранее спасибо.

Что я уже пробовал:

Я искал на многих сайтах, но никаких ответов.

phil.o

Пожалуйста, не кричи :)

1 Ответов

Рейтинг:
2

phil.o

Обычно не рекомендуется хранить файлы, особенно большие, в вашей базе данных. Базы данных не оптимизированы для хранения огромных двоичных файлов. Вместо этого вы должны сохранить путь к файлу в базе данных, а сам файл оставить обычной файловой системе.
Это на самом деле очень распространенный вопрос, вот несколько ссылок, относящихся к этому вопросу:
база данных - хранение изображений в БД - да или нет? - переполнение стека[^]
Файловой системы и База данных - dzone[^]


Jassom

спасибо за ответ.

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

MadMyche

Использовали ли вы какие-либо аналитические инструменты в SQL Server или монитор производительности в Windows, чтобы увидеть, что происходит с использованием памяти и процессора?

Jassom

Спасибо за ответ.
Я использую монитор производительности в Windows, чтобы увидеть, что происходит, производительность процессора работает нормально, память заполняется примерно на 95% при хранении файлов до 250 МБ.

MadMyche

Ну, это примерно отвечает на ваш вопрос: ваша система исчерпывает ресурсы, когда вы пытаетесь это сделать.
Решение простое: не делайте этого. Зашифруйте файл и сохраните его как файл, а также укажите ссылку на него в своей таблице

Dave Kreskowiak

Затем зашифруйте файлы и расшифруйте их, когда они вам понадобятся.

Действительно, хранение файла размером 300 МБ в базе данных-плохая идея, независимо от того, как вы на это смотрите.

Взгляните на следующее И посмотрите, что это может сделать для вас.
Двоичные данные больших объектов (Blob) (SQL Server) - SQL Server | Microsoft Docs[^]

Jassom

Спасибо за ответ.
Шифровать файлы и расшифровывать их-тоже хорошая идея ..