Поделиться через


Создание наборов данных отчета из реляционной базы данных SQL Server

Службы Reporting Services предоставляют модуль обработки данных, поддерживающий получение данных отчетов из реляционных баз данных MicrosoftSQL Server. Этот модуль получает данные из таблиц, представлений и хранимых процедур реляционной базы данных, а также из других структур данных, определенных в базовом источнике данных. После подключения к источнику данных можно создать набор данных отчета, определяющий данные из этого источника, которые нужно использовать в отчете. Набор данных служб Reporting Services включает источник данных, запрос, получающий данные при обработке отчета, и коллекцию полей. Определение набора данных сохраняется в определении отчета. В области Данные отчета отображаются текущие определения наборов данных в отчете.

Набор данных определяется путем создания запроса в виде текста на языке Transact-SQL или с помощью вызовов хранимых процедур, либо путем выбора таблицы и получения всех ее данных. Коллекция полей для набора данных создается автоматически из запроса. Можно изменять поля или добавлять вычисляемые поля. Вычисляемые поля содержат значения на основе выражений, вычисляемых при выполнении запроса. Типы данных полей сопоставляются с подмножеством типов данных среды CLR из .NET Framework. Дополнительные сведения см. в разделах Основные сведения о наборах данных отчетов и Как получить данные из источника данных SQL Server.

Имеются два конструктора запросов для реляционных источников данных: текстовый конструктор запросов и графический конструктор запросов. По умолчанию открывается текстовый конструктор запросов. С помощью текстового конструктора запросов можно напрямую вводить текст запроса на языке Transact-SQL, вставлять его из других источников, вводить сложные запросы, которые нельзя построить с помощью графического конструктора запросов, а также вводить выражения на основе запросов. С помощью графического конструктора запросов можно просматривать метаданные в источнике данных для интерактивного конструирования запроса, а также просматривать список хранимых процедур или таблиц в источнике данных. Дополнительные сведения см. в разделах Графический пользовательский интерфейс конструктора запросов, Пользовательский интерфейс текстового конструктора запросов и Как получить данные из источника данных SQL Server.

После определения запроса также можно указать свойства, например Timeout или CaseSensitivity, и определить, какие параметры отчета должны передавать значения параметрам запроса. При выполнении запроса будет отображен результирующий набор из источника данных. Столбцы в результирующем наборе соответствуют полям набора данных. В процессе обработки отчета в его элементах, связанных с полями набора данных, будут отображены полученные или вычисленные данные. Отчет обрабатывает только первый результирующий набор, полученный с помощью какого-либо запроса.

Указание запроса

Чтобы указать запрос для набора данных для источника данных SQL Server, можно использовать текстовый или графический конструктор запросов. При указании запроса для нового набора данных по умолчанию открывается графический конструктор запросов. Если существующий запрос набора данных слишком сложный, чтобы просмотреть его в графическом конструкторе запросов, открывается текстовый конструктор запросов. Оба конструктора запросов поддерживают следующие типы запросов: Text и StoredProcedure. Тип запроса указывается в диалоговом окне «Свойства набора данных» перед открытием конструктора запросов.

Если в текст запроса с типом Text включить параметры запроса, службы Reporting Services создают соответствующие параметры отчета. Если хранимые процедуры для типа запроса StoredProcedure имеют входные параметры, службы Reporting Services создают соответствующие параметры отчета. Дополнительные сведения о параметрах запроса и параметрах отчета см. в подразделе Использование параметров запроса ниже в этом разделе.

Дополнительные сведения о конструкторах запросов см. в разделах Пользовательский интерфейс текстового конструктора запросов и Графический пользовательский интерфейс конструктора запросов.

Использование типа запроса Text

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

SELECT FirstName, LastName
FROM   HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID

Нажмите кнопку Выполнить (!) на панели инструментов, чтобы выполнить запрос и отобразить результаты в области Результаты.

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

Использование типа запроса StoredProcedure

Если конструктор запросов открывается в режиме StoredProcedure, то хранимая процедура уже выбрана при указании режима StoredProcedure в диалоговом окне «Свойства набора данных».

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

Службы Reporting Services поддерживают хранимые процедуры, возвращающие только один набор данных. Если хранимая процедура возвращает несколько результирующих наборов, используется только первый из них.

Если у хранимой процедуры есть параметр со значением по умолчанию, к этому значению в службах Reporting Services можно получить доступ, используя ключевое слово DEFAULT как значение параметра. Если параметр запроса связан с параметром отчета, пользователь может ввести или выбрать слово DEFAULT в поле ввода параметра отчета. Дополнительные сведения см. в разделе Хранимые процедуры (компонент Database Engine).

Использование параметров запроса

Для текста запроса, содержащего параметры, или для хранимой процедуры с входными параметрами, конструктор отчетов при запуске запроса автоматически создает соответствующие параметры отчета в определении отчета. При выполнении запроса значения параметров отчета передаются в параметры запроса. Например, следующий SQL-запрос создает параметр отчета с именем EmpID:

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID 
WHERE EmployeeID = @EmpID

Связью между параметрами отчета и параметрами запроса можно управлять с помощью Диалоговое окно «Свойства набора данных» — «Параметры». Запросы с параметрами, связанными с параметрами отчета, не требуют инструкции DECLARE.

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

ПримечаниеПримечание

Если изменится имя параметра запроса или удалится параметр запроса, соответствующий ему параметр отчета не будет автоматически изменен или удален. Можно изменить порядок параметров отчета или удалить их с помощью кнопок панели инструментов области Данные отчета. Дополнительные сведения см. в разделе Добавление параметров к отчету.