Пользовательские отчеты в среде Management Studio
Во многих узлах обозревателя объектов в среде SQL Server Management Studioотображается набор стандартных отчетов, созданных в Microsoft. В этих отчетах сведены все обычно запрашиваемые данные о серверах. Начиная с SQL Server 2005 с пакетом обновления 2 (SP2), администраторы могут запускать пользовательские отчеты, созданные в SQL Server Data Tools (SSDT) из Management Studio.
Реализация
Пользовательские отчеты создаются на языке определения отчетов и хранятся в виде файлов определения отчетов (RDL). RDL определяет сведения о получении данных и макете отчета в формате XML. Язык RDL представляет собой открытую схему. Это дает разработчикам возможность расширять его, добавляя дополнительные атрибуты и элементы. Внутри отчета могут выполняться любые допустимые инструкции Transact-SQL.
Если обозреватель объектов не подключен к серверу, то пользовательские отчеты могут выполняться в контексте текущего узла, выбранного в обозревателе объектов, если отчеты ссылаются на его параметры отчета. Это позволяет отчету использовать текущий контекст (например, текущую базу данных) либо согласованный контекст (например, указать нужную базу данных в инструкции Transact-SQL, включенной в пользовательский отчет).
Запуск пользовательского отчета
В среде Среда Management Studio пользовательский отчет может быть запущен одним из следующих способов.
Щелкните узел в обозревателе объектов правой кнопкой мыши, наведите указатель на Отчеты , а затем выберите пункт Пользовательские отчеты. В диалоговом окне Открытие файла найдите папку, содержащую RDL-файлы, и откройте нужный файл отчета.
Щелкните узел в обозревателе объектов правой кнопкой мыши, наведите указатель на Отчеты, а затем выберите пункт Пользовательские отчеты. После этого выберите из списка последних использованных файлов нужный пользовательский отчет.
Ограничения
Во время работы с пользовательскими отчетами необходимо учитывать следующие ограничения.
Чтобы предотвратить выполнение вредоносного кода, в среде Среда Management Studio запрещен автоматический запуск отчетов даже в том случае, если в файловой системе RDL-файлы сопоставлены со средой Среда Management Studio. Отчеты не могут выполняться в среде Среда Management Studio программным способом. Кроме этого, невозможно их выполнение из командной строки среды Среда Management Studio.
Пользовательские отчеты могут быть запущены в контексте, который не содержит ожидаемых значений. Например, отчет о репликации может быть запущен в контексте базы данных, которая не участвует в репликации, либо от имени пользователя, не имеющего разрешений для доступа к данным, необходимым для его формирования. Автор пользовательского отчета отвечает за правильность его структуры и контекста.
Пользовательский отчет не может быть добавлен в список стандартных отчетов.
Код, обрабатываемый в отчете, может оказать влияние на производительность сервера.
Пользовательские отчеты не поддерживают вложенные отчеты.
Текст команды для запросов внутри отчета не должен быть задан через выражение.
Любой параметр, используемый в команде (запросе), может ссылаться только на один параметр отчета и не может использовать операторы выражений.
Для команд отчетов (запросов) поддерживаются только следующие типы команд: «Только текст» и «Хранимая процедура».
Среда обработки отчетов не предусматривает экранирование параметров запросов. Автор запроса должен проверить, что его запрос устойчив к атакам типа «Внедрение SQL».
Управление пользовательскими отчетами
Пользователям, имеющим несколько пользовательских отчетов, рекомендуется упорядочить их по папкам файловой системы, задав соответствующие разрешения файловой системы NTFS.
Разрешения
Пользовательские отчеты работают с разрешениями текущего пользователя. Чтобы предотвратить изменение выполняемых отчетом запросов злоумышленниками, рекомендуется предоставлять ограниченные разрешения на папки, содержащие файлы отчетов.
И пользователь, и применяемая службой SQL Server учетная запись должны иметь доступ на чтение системной папки с файлами отчетов.
В отчет может быть внедрена любая допустимая команда .NET Framework , однако она не будет выполнена.
Внимание!
В отчет можно внедрить любую допустимую инструкцию Transact-SQL, чтобы выполнять ее из этого отчета. Запуск отчета через учетную запись пользователя, обладающего расширенными правами доступа, делает возможным беспрепятственный запуск любых внедренных инструкций.
См. также:
Добавление пользовательского отчета в среду Management Studio
Отмена подавления предупреждений для пользовательских отчетов
Использование пользовательских отчетов для свойств узлов обозревателя объектов