2015-10-22 3 views
1

У меня есть пакет SSIS, в котором есть SQL-запрос Execute, где у меня есть инструкция INSERT, которая вставляет данные журнала в эту таблицу отслеживания ssis в smss, которая отслеживает время выполнения. Каждый раз, когда я пытаюсь выполнить задачу, я получаю эту ошибку: [Выполнение SQL-задачи] Ошибка: выполнение запроса «INSERT INTO dbo.SSIS_Logging_Details (Execution_In ...» не удалось со следующей ошибкой: «Должен объявить скалярную переменную «@ExecGUID». "Возможные причины отказа:. Проблемы, связанные с запросом,„свойство ResultSet“установлены неправильно, параметры установлены неправильно, или соединение не установлено правильноПараметр SQL Вставка в отчет SSIS-пакет

1.Это Заявление я имею. поле SQLStatement в задаче Execute SQL:

INSERT INTO dbo.SSIS_Logging_Details 
      (Execution_Instance_GUID, Package_Name, Execution_Date) 
      VALUES (@ExecGUID, @PackageName, GetDate()) 

2.Я имеют эти параметры на вкладке Mapping параметров задачи Execute SQL: enter image description here

3.For таблицы SQL в SMSs: tableSSIS_Logging-подробности здесь являются поля:

Execution_Instance_GUID NCHAR (100) NULL

PACKAGE_NAME NCHAR (100) NULL

Execution_Date DateTime NULL

4.And для 'Журналы Настройка служб SSIS: пакет' у меня есть р ackage там, где тип провайдера является поставщиком протокола SSIS для SQL Server (но он почему-то переключается на SQL Server Profiler по какой-либо причине, когда я его открываю ..) enter image description here

ответ

1

Вы не используете имена переменных в запросе в выполнении задачи sql. Вы заменить их знак вопроса заполнителей, например:

INSERT INTO dbo.SSIS_Logging_Details 
      (Execution_Instance_GUID, Package_Name, Execution_Date) 
      VALUES (?, ?, GetDate()) 

В вашем отображении параметров вместо имен параметров, использовать свое положение, начиная с 0 для первого параметра. Поэтому замените @ExecGUID на 0 и замените @PackageName на 1.

0

Вы также могли бы написать это следующим образом:

DECLARE @ExecGUID NCHAR(100) 
DECLARE @PackageName NCHAR(100) 

SET @ExecGUID = ? 
SET @PackageName = ? 

INSERT INTO dbo.SSIS_Logging_Details 
    (Execution_Instance_GUID, Package_Name, Execution_Date) 
VALUES (@ExecGUID, @PackageName, GetDate()) 

Я использую этот формат, потому что я считаю, что легче проверить в Management Studio. Вместо поиска ? это сохранит все ваши назначения в одном месте, особенно если у вас есть большое количество строк в выполнении sql-задачи.

Вам все равно необходимо изменить отображение параметров, как упоминает @Tab Alleman в его ответе.

Смежные вопросы