Использование параметров запросов с конкретными источниками данных
Добавления: 17 июля 2006 г.
При определении запроса для набора данных выбирается тип источника данных. Тип источника данных указывает модуль обработки данных или зарегистрированный поставщик данных .NET, используемый для соединения с источником данных. Поставщик данных представляет собой слой программного обеспечения, который взаимодействует с источником данных и определяет, какая существует поддержка использования переменных в запросе. Данный подраздел показывает, как изменяется запрос для получения одного и того же результирующего набора в зависимости от источника данных, к которому производится подключение, и от того, содержатся ли в запросе переменные.
Переменные запроса и поставщики данных
В следующей таблице показаны результирующие данные из образца базы данных AdventureWorks. Этот результирующий набор можно получить, запустив запрос Transact-SQL в образце базы данных AdventureWorks или запрос многомерных выражений в кубе Adventure Works, развернутом как часть образца отчетов AdventureWorks. Результирующий набор содержит два столбца: названия моделей товаров, которые содержат слово «Mountain», и соответствующее число продаж через Интернет.
Название | Продажи через Интернет |
---|---|
Набор крыльев для велосипедов Mountain |
2121 |
Шины для велосипеда HL Mountain |
1396 |
Шины для велосипеда LL Mountain |
862 |
Шины для велосипеда ML Mountain |
1161 |
Держатель фляги для велосипеда Mountain |
2025 |
Камера шины для велосипеда Mountain |
3095 |
Велосипед Mountain-100 |
396 |
Велосипед Mountain-200 |
3552 |
Велосипед Mountain-400-W |
543 |
Велосипед Mountain-500 |
479 |
Женские шорты Mountain |
1019 |
В следующих разделах будут продемонстрированы запросы, используемые для создания этого результирующего набора: сначала из реляционной базы данных, а затем из многомерной базы данных.
Реляционные базы данных как источники данных
Для реляционной базы данных, такой как Microsoft SQL Server, можно создать запросы с помощью языка Transact-SQL. Хотя этот запрос ограничивает результаты за счет включения предложения WHERE, которое содержит жестко закодированное значение, этот запрос пока не имеет переменных.
Запрос Transact-SQL |
---|
|
Чтобы добавить переменную для названия модели товара, PM.Name
, необходимо указать в запросе параметр в предложении WHERE. В следующей таблице показано, как указывать параметры запроса для разных поставщиков данных. Поставщик данных выбирается автоматически, когда выбирается тип источника данных. Строка соединения для данного поставщика данных показана во втором столбце. Запрос в этой таблице идентичен приведенному выше запросу за исключением того, что в него добавлен параметр в той форме, которая поддерживается этим поставщиком данных.
Тип источника данных | Поставщик данных | Запрос |
---|---|---|
Microsoft SQL Server |
Microsoft SQL Server (SqlClient) Строка соединения
|
|
OLE DB |
Поставщик данных OLE DB для SQL Server Строка соединения
|
|
Oracle |
Microsoft SQL Server (OracleClient) |
|
OLE DB |
Любой зарегистрированный поставщик данных .NET |
Зависит от поставщика |
В этих примерах в предложение WHERE запроса была добавлена переменная, заменяющая проверку наличия слова «Mountain» проверкой наличия значения переменной.
- Поставщик данных .NET для SQL Server поддерживает именованные переменные, начинающиеся с символа @. Например,
PM.Name ``LIKE '%' + @Mountain + '%')
. - Поставщик OLE DB для SQL Server не поддерживает именованные переменные. Для указания переменной используется знак вопроса (?). Параметры, передаваемые поставщику OLE DB, должны передаваться в том порядке, в каком они встречаются в предложении WHERE. Например,
PM.Name ``LIKE ('%' + ? + '%')
. - Поставщик данных .NET для Oracle поддерживает обозначенные числами параметры, которые начинаются с символа двоеточия (:). Например,
PM.Name ``LIKE '%' + :1 + '%')
. - Поддержка переменных другими поставщиками данных OLE DB определяется конкретным поставщиком. Дополнительные сведения можно найти в документации поставщика.
Конструктор запросов, связанный с типом источника данных, создает параметр запроса для каждой идентифицированной переменной. Эти параметры запросов перечислены на вкладке «Параметры» страниц свойств наборов данных. Для каждого параметра запроса создается параметр отчета типа String. Значения параметров запроса, определенные для набора данных, устанавливаются для соответствующих параметров отчета. Можно изменять тип данных параметра отчета и другие свойства в диалоговом окне «Свойства отчета», которое доступно в меню «Отчет», когда используется представление «Данные». Кроме того, можно создавать, изменять и удалять эти параметры запроса вручную. Дополнительные сведения см. в разделе Набор данных (вкладка «Параметры», конструктор отчетов).
Многомерные базы данных как источники данных
Для многомерных баз данных, таких как службы Microsoft Analysis Services, можно создавать запросы на языке многомерных выражений. Хотя этот запрос ограничивает результаты за счет включения предложения Filter, которое содержит жестко закодированное значение, он пока не имеет переменных.
Запрос многомерных выражений |
---|
|
Чтобы добавить переменную для названия модели товара, @ProductModelName, необходимо добавить предложение FILTER. В следующей таблице показано, что для многомерных баз данных переменные являются частью предложения FILTER. Тип источника данных является значением, выбираемым из раскрывающегося списка при создании нового источника данных для служб Reporting Services. Поставщик данных выбирается автоматически, когда выбирается тип источника данных. Строка соединения для данного поставщика данных показана во втором столбце. Запрос в этой таблице идентичен приведенному выше запросу за исключением того, что в него добавлен параметр в той форме, которая поддерживается этим поставщиком данных.
Тип источника данных | Поставщик данных | Запрос |
---|---|---|
Службы Microsoft SQL Server Analysis Services |
Службы SQL Server Analysis Services (AdomdClient) Строка соединения
|
|
OLE DB |
Поставщик Microsoft OLE DB для служб Analysis Services 9.0 Строка соединения:
|
Поставщик OLE DB для OLAP не поддерживает параметризованные запросы. Способы разрешения этой ситуации описаны в следующей статье: «Объединение служб Analysis Services и Reporting Services». |
В этих примерах в предложение WHERE запроса была добавлена переменная, заменяющая проверку наличия слова «Mountain» проверкой наличия значения переменной.
- Службы Microsoft SQL Server Analysis Services поддерживают именованные параметры, определенные в разделе «Фильтр» конструктора запросов многомерных выражений. Именованные переменные начинаются с символа @. Например,
@ProductModelName
. - Поставщик Microsoft OLE DB Provider for Analysis Services 9.0 не поддерживает параметризованные запросы. Дополнительные сведения см. в статье «Объединение служб Analysis Services и Reporting Services» на узле msdn.microsoft.com.
- Поддержка переменных другими поставщиками многомерных данных определяется конкретным поставщиком. Дополнительные сведения можно найти в документации поставщика.
Конструктор запросов, связанный с типом источника данных, создает параметр запроса для каждой идентифицированной переменной. Специальный набор данных создается автоматически для обеспечения допустимых значений каждого параметра. Эти параметры запросов перечислены на вкладке «Параметры» страниц свойств наборов данных. Для каждого параметра запроса создается параметр отчета типа String. Значения параметров запроса, определенные для набора данных, устанавливаются для соответствующих параметров отчета. Кроме того, можно создавать, изменять и удалять эти параметры набора данных вручную. Дополнительные сведения см. в разделе Как определить параметры в конструкторе запросов многомерных выражений и конструкторе DMX-запросов для служб Analysis Services (конструктор отчетов).
Наборы данных, обеспечивающие допустимые значения для каждого запроса, создаются при обработке запроса.
См. также
Задачи
Как связать параметр запроса с параметром отчета (конструктор отчетов)
Основные понятия
Использование расширенных свойств поля для базы данных служб Analysis Services
Использование конструктора запросов многомерных выражений служб Analysis Services в режиме конструктора
Использование конструктора запросов многомерных выражений служб Analysis Services в режиме запросов
Определение наборов данных отчета для реляционной базы данных SQL Server
Определение наборов данных отчета для реляционных данных из базы данных Oracle
Другие ресурсы
Пользовательский интерфейс конструктора запросов многомерных выражений служб Analysis Services
Пользовательский интерфейс конструктора запросов SQL Server