Хранение файлов Crystal Reports в базе данных? - PullRequest
5 голосов
/ 08 октября 2008

У меня есть интерфейс пользовательского интерфейса, который взаимодействует с базой данных SQL Server и манипулирует ею, и одна из вещей, которую он может сделать, - запускать отчеты по данным в базе данных.

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

Я думал о том, чтобы хранить файлы .rpt в самой базе данных (в виде BLOB-объектов) и иметь некоторый механизм для пользовательского интерфейса для их извлечения при необходимости для централизации отчетов и устранения этой проблемы.

Кто-нибудь пробовал это, и оно работало хорошо? Или, если нет, можете ли вы придумать что-то, что я должен принять во внимание, прежде чем двигаться дальше? Какие советы, хитрости или предостережения, которые вы можете себе представить, могут быть полезны для меня?

Ответы [ 4 ]

3 голосов
/ 09 октября 2008

Отличный вопрос! Это как бы случайно, так как мы только что реализовали это за последние шесть месяцев.

Как вы и предлагали, мы храним файл rpt в базе данных, но делаем это в Server 2005 как тип изображения. Он работает просто отлично, и что касается базы данных, на самом деле нет никаких предостережений, которые приходят на ум.

Очевидно, способ доступа к этой информации меняется с помощью API. Если вы используете C #, это означает использование BinaryReader для загрузки в rpt-файл с захватом байтового массива . Этот байтовый массив затем может быть передан в базу данных через хранимую процедуру и т. Д.

Я понимаю, что вы спрашиваете конкретно о BLOB-объектах и ​​Server 2008, но это работает как в Server 2005, так и в Server 2008 . Надеюсь, это проливает немного света.

Если вам нужны более конкретные детали, я был бы рад поделиться!

1 голос
/ 23 октября 2008

Хорошо, теперь мы все можем легко хранить большой двоичный объект на сервере SQL Server, ORACLE, SQLITE, MYSQL и в любой другой базе данных, которая стоит чего угодно. Что мне интересно, так это после того, как вы получили байтовый массив из БД, как вы создали отчет?

Я хочу сделать то же самое, но единственное, о чем я могу подумать, - это извлечь файл из БД, создать физический файл в папке Temp и затем использовать физический адрес нового файла для создания кристалла. Отчет. Есть ли способ создать Crystal Report из потока памяти или байтового массива?

1 голос
/ 09 октября 2008

Вот отличный подкаст с Полом Рэндалом (он написал части DBCC!), В котором они рассказывают о новой функции файлового потока в SQL Server 2008 для обработки больших двоичных объектов, но они также касаются размеров файлов, которые работают и работают не очень хорошо. как капли как часть разговора. Я думаю, что это поможет вам. http://www.runasradio.com/default.aspx?showNum=74

Я только что узнал, что 25-страничный документ FILESTREAM, который написал Пол, опубликован на MSDN. http://msdn.microsoft.com/en-us/library/cc949109.aspx.

На основании исследования, процитированного ниже в этом документе, большие двоичные объекты размером менее 256 килобайт (КБ) (например, значки виджетов) лучше хранить в базе данных, а лучшие двоичные объекты размером более 1 мегабайта (МБ) лучше всего хранить вне базы данных. Для тех, которые имеют размер от 256 КБ до 1 МБ, более эффективное решение для хранения зависит от соотношения чтения и записи данных и скорости «перезаписи». Хранение данных BLOB исключительно в базе данных (например, с использованием типа данных varbinary (max)) ограничено 2 гигабайтами (ГБ) на BLOB.

0 голосов
/ 12 марта 2015

.RPT файл может быть сохранен в базе данных (sql), если он будет иметь тип image.Store байтовый массив в базу данных, а затем извлечь его как поток. (СОВЕТ: Обрабатывать его как файл изображения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...