Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Задача Execute SQL выполняет инструкции SQL или хранимые процедуры из пакета. Задача может содержать одну инструкцию SQL или несколько инструкций SQL, которые выполняются последовательно. Задачу Execute SQL можно использовать для следующих целей:
Усечь таблицу или представление для подготовки к вставке данных.
создание, изменение и удаление объектов базы данных, таких как таблицы и представления;
повторное создание таблиц фактов и таблиц измерений перед загрузкой данных;
выполнение хранимых процедур; Если инструкция SQL вызывает хранимую процедуру, возвращающую результаты из временной таблицы, используйте параметр WITH RESULT SETS для определения метаданных набора результатов.
Сохраните набор строк, возвращаемый из запроса, в переменную.
Задача Execute SQL может использоваться в сочетании с контейнерами "Цикл foreach" и "Цикл for" для выполнения нескольких инструкций SQL. Эти контейнеры реализуют повторяющиеся потоки управления в пакете, и они могут многократно выполнять задачу Execute SQL. Например, с помощью контейнера цикла foreach пакет может перечислять файлы в папке и выполнять задачу Execute SQL многократно, чтобы выполнить инструкцию SQL, хранящуюся в каждом файле.
Подключение к источнику данных
Задача Execute SQL может использовать различные типы диспетчеров соединений для подключения к источнику данных, где выполняется инструкция SQL или хранимая процедура. Задача может использовать типы подключений, перечисленные в следующей таблице.
| Тип подключения | Диспетчер соединений |
|---|---|
| ХОЛСТ | Диспетчер соединений Excel |
| OLE DB | Диспетчер соединений OLE DB |
| ODBC (Интерфейс открытой базы данных) | Диспетчер соединений ODBC |
| АДО | Диспетчер соединений ADO |
| ADO.NET | Диспетчер подключений ADO.NET |
| SQLMOBILE | Диспетчер соединений SQL Server Compact Edition |
Создание инструкций SQL
Источником инструкций SQL, используемых этой задачей, может быть свойство задачи, содержащее инструкцию, соединение с файлом, содержащим одну или несколько инструкций, или имя переменной, содержащей инструкцию. Инструкции SQL должны быть написаны на диалекте системы управления исходной базой данных (СУБД). См. Запросы служб Integration Services (SSIS) для получения дополнительной информации.
Если инструкции SQL хранятся в файле, задача использует диспетчер соединений файлов для подключения к файлу. Дополнительные сведения см. в статье File Connection Manager.
В конструкторе служб SSIS можно использовать диалоговое окно редактора задач Execute SQL для ввода инструкций SQL или использования построителя запросов, графического пользовательского интерфейса для создания запросов SQL. Дополнительные сведения см. в разделе "Выполнение редактора задач SQL" (страница "Общие") и построителя запросов.
Замечание
Допустимые инструкции SQL, написанные за пределами задачи Execute SQL, не могут быть успешно проанализированы задачей Execute SQL.
Замечание
Задача Execute SQL использует значение перечисления ParseMode RecognizeAll. Дополнительные сведения см. в разделе ManagedBatchParser Namespace.
Отправка нескольких заявлений в пакетном режиме
Если вы включаете несколько инструкций в задачу Execute SQL, их можно сгруппировать и запустить как пакет. Чтобы сигнализировать о завершении пакета, используйте команду GO. Все инструкции SQL между двумя командами GO отправляются в пакет поставщику OLE DB для выполнения. Команда SQL может включать несколько пакетов, разделенных командами GO.
Существуют ограничения на типы инструкций SQL, которые можно группировать в пакете. Дополнительные сведения см. в разделе "Пакеты инструкций".
Если задача Execute SQL запускает пакет инструкций SQL, к пакету применяются следующие правила:
Только одна инструкция может возвращать результирующий набор, и она должна быть первой инструкцией в пакете.
Если результирующий набор использует привязки результатов, запросы должны возвращать то же количество столбцов. Если запросы возвращают другое количество столбцов, задача завершается ошибкой. Однако даже если задача завершается ошибкой, запросы, которые он выполняет, например DELETE или INSERT-запросы, могут завершиться успешно.
Если привязки результатов используют имена столбцов, запрос должен возвращать столбцы с теми же именами результирующих наборов, которые используются в задаче. Если отсутствуют столбцы, задача завершается ошибкой.
Если задача использует привязку параметров, все запросы в пакете должны иметь одинаковое число и типы параметров.
Выполнение параметризованных команд SQL
Инструкции SQL и хранимые процедуры часто используют входные параметры, выходные параметры и коды возврата. Задача Execute SQL поддерживает типы параметров Input, Output и ReturnValue. Используйте тип Input для входных параметров, Output — для выходных и ReturnValue — для кодов возврата.
Замечание
В задаче «Выполнение SQL» параметры могут использоваться, только если их поддерживает поставщик данных.
Сведения об использовании параметров и кодов возврата в задаче Execute SQL см. в разделе "Параметры" и "Коды возврата" в задаче "Выполнение SQL".
Указание типа результирующих наборов
В зависимости от типа команды SQL результирующий набор может быть или не быть возвращен в задачу Execute SQL. Например, инструкция SELECT обычно возвращает результирующий набор, но инструкция INSERT этого не делает. Результирующий набор из инструкции SELECT может содержать нулевые строки, одну строку или множество строк. Хранимые процедуры также могут возвращать целочисленное значение, называемое возвращаемым кодом, которое указывает состояние выполнения процедуры. В этом случае результирующий набор состоит из одной строки.
Сведения о получении результирующих наборов из команд SQL в задаче "Выполнение SQL" см. в разделе "Результирующие наборы" в задаче "Выполнение SQL".
Устранение неполадок задачи Execute SQL
Вы можете регистрировать вызовы, выполняемые задачей Execute SQL для внешних поставщиков данных. Эту возможность ведения журнала можно использовать для устранения неполадок команд SQL, выполняемых задачей Execute SQL. Чтобы регистрировать вызовы, выполняемые задачей Execute SQL для внешних поставщиков данных, включите ведение журнала пакетов и выберите событие диагностики на уровне пакета. Дополнительные сведения см. в разделе "Средства устранения неполадок для выполнения пакетов".
Иногда команда SQL или хранимая процедура возвращает несколько результирующих наборов. Эти результирующие наборы включают не только наборы строк, которые являются SELECT результатом запросов, но и отдельные значения, которые являются результатом ошибок RAISERROR или PRINT инструкций. Если задача игнорирует ошибки в результирующих наборах, возникающих после первого результирующего набора, это зависит от типа используемого диспетчера соединений.
При использовании диспетчеров соединений OLE DB и ADO задача игнорирует результирующие наборы, которые появляются после первого набора результатов. Поэтому при использовании этих диспетчеров соединений задача игнорирует ошибку, возвращаемую командой SQL или хранимой процедурой, если ошибка не входит в первый результирующий набор.
При использовании диспетчеров соединений ODBC и ADO.NET задача не игнорирует результирующие наборы, возникающие после первого результирующего набора. При использовании этих диспетчеров соединений задача завершится ошибкой, если какой-либо результирующий набор, кроме первого, содержит ошибку.
Пользовательские записи журнала
В следующей таблице описана пользовательская запись журнала для задачи Execute SQL. Дополнительные сведения см. в разделе логирование служб Integration Services (SSIS) и настраиваемые сообщения для логирования.
| Запись журнала | Описание |
|---|---|
ExecuteSQLExecutingQuery |
Предоставляет сведения о этапах выполнения инструкции SQL. Записи журнала записываются при получении задачи подключения к базе данных, когда задача начинает подготовку инструкции SQL и после завершения выполнения инструкции SQL. Запись журнала для этапа подготовки включает инструкцию SQL, которую использует задача. |
Настройка задачи Execute SQL
Задачу Execute SQL можно настроить следующим образом:
Укажите тип диспетчера соединений, используемый для подключения к базе данных.
Укажите тип результирующего набора, который возвращает SQL-запрос.
Укажите время ожидания для инструкций SQL.
Укажите источник инструкции SQL.
Указывает, пропускает ли задача этап подготовки для инструкции SQL.
Если используется тип подключения ADO, необходимо указать, является ли инструкция SQL хранимой процедурой. Для других типов подключений это свойство доступно только для чтения, и его значение всегда
false.
Свойства можно задать программным способом или с помощью конструктора служб SSIS.
Чтобы получить дополнительную информацию о свойствах, которые можно задать в конструкторе SSIS, щелкните один из следующих разделов:
Редактор задачи "Выполнение SQL" (страница "Сопоставление параметров")
Редактор задачи "Выполнение SQL" (страница "Результирующий набор")
Дополнительные сведения о настройке этих свойств в конструкторе служб SSIS см. в следующем разделе:
Настройка задачи "Выполнение SQL" программным способом
Дополнительные сведения об установке этих свойств программными средствами см. в следующем разделе.
Связанные задачи
Сопоставление параметров запроса с переменными в задаче Execute SQL
Сопоставление наборов результатов с переменными в задаче Execute SQL