Хранение файлов Crystal Reports в базе данных?
У меня есть интерфейсный интерфейс, который говорит и управляет базой данных SQL Server, и одна из вещей, которую он может сделать, это запустить отчеты о данных в базе данных.
Этот пользовательский интерфейс можно установить на нескольких компьютерах, и до сих пор я только сохранял отчеты в папке с установкой, но это означает, что в любой момент добавления нового отчета приходится вручную копировать каждый установочный интерфейс пользователя там.
Я думал хранить файлы .rpt в самой базе данных (как Blobs) и иметь некоторый механизм для пользовательского интерфейса для их при необходимости, как способ централизовать отчеты и устранить эту проблему.
- как применять SQL-запрос с диапазоном дат в отчете о кристалле
- Два запроса Sql Expression
- Crystal Report throws «Не удалось открыть соединение». только по обратной передаче
- Кристальный отчет - Групповые города по странам
- Отчет Crystal со связанными вложенными отчетами работает только с предварительным просмотром отчетов
Кто-нибудь пробовал это и хорошо ли работал? Или, если вы этого не сделали, можете ли вы придумать что-нибудь, что я должен принять во внимание, прежде чем двигаться дальше? Есть ли советы, трюки или оговорки, о которых вы можете подумать, что может быть полезно для меня?
- Как использовать несколько таблиц в отчетах о кристаллах?
- Оператор CASE в выражении where в запросе tsql
- передача параметра в отчет о кристалле в виде окна (vb.net)
- Предложения по созданию Pdf
- Поля Blob в Crystal Reports с использованием ASP.Net
- Об изменении связи с кристаллическими формами отчетов
- Подключение Crystal Reports в базе данных
- Упрощение операторов SQL SELECT?
Отличный вопрос! Это похоже на совпадение, поскольку мы фактически реализовали это в течение последних шести месяцев.
Как вы предположили, мы храним rpt-файл в базе данных, но делаем это в Server 2005 как тип изображения. Он работает очень хорошо, и, поскольку база данных идет, на самом деле нет никаких оговорок, которые приходят на ум.
Очевидно, что способ доступа к этой информации изменяется с помощью API. Если вы используете C #, это означает использование BinaryReader для загрузки в rpt-файл, захват байтового массива . Этот массив байтов затем может быть передан в базу данных, через хранимую процедуру и т. Д.
Я понимаю, что вы спрашиваете конкретно о блобах и сервере 2008, но это работает как в Server 2005, так и в Server 2008 . Надеюсь, это проливает немного света.
Если вам нужны более конкретные детали, я был бы рад поделиться!
Вот отличный подкаст с Полом Рэндалом (он написал части DBCC!), Где они рассказывают о новой функции фильтрации в sql server 2008 для обработки капли, но они также входят в размеры файлов, которые делают и не работают хорошо, как blobs, как часть разговора. Я думаю, это поможет вам. http://www.runasradio.com/default.aspx?showNum=74
Я только узнал, что 25-страничный документ FILESTREAM, написанный Павлом, был опубликован на MSDN. http://msdn.microsoft.com/en-us/library/cc949109.aspx .
Основываясь на результатах исследований, приведенных ниже в этом техническом документе, BLOB размером менее 256 килобайт (КБ) (например, значки виджетов) лучше сохраняются внутри базы данных, а BLOB размером более 1 мегабайта (МБ) лучше всего хранить за пределами базы данных. Для пользователей размером от 256 КБ до 1 МБ более эффективное решение для хранения зависит от соотношения чтения и записи данных и скорости «перезаписывания». Хранение данных BLOB исключительно в базе данных (например, с использованием типа данных varbinary (max)) ограничено 2 гигабайтами (ГБ) на BLOB.
Итак, теперь все мы можем легко хранить BLOB в SQL Server, ORACLE, SQLITE, MYSQL Server и любой другой базе данных, которая того стоит. Мне интересно, после того, как вы получили массив байтов из базы данных, как вы создали отчет?
Я хочу сделать то же самое, но единственное, что я могу придумать, это вытащить файл из БД, создать физический файл в папке Temp, а затем использовать физический адрес нового файла для создания Crystal Report. Есть ли способ создать Crystal Report из потока памяти или байт-массива?
.RPT-файл можно сохранить в базе данных (sql), указав его как image.Store байт массива в базу данных, а затем получить его как поток. (СОВЕТ: рассматривать его как файл изображения.)