ssis - вставить значения переменных в таблицу - PullRequest
3 голосов
/ 22 июля 2010

У меня есть несколько переменных в пакете служб SSIS, которые я хотел бы вставить в таблицу.

пример: -

@financialMonth, @Status, @Comments

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

Является ли использование задачи исполнения SQL способом сделать это?

Нужно ли вызывать sproc и передавать эти переменные в качестве параметров?

Я пытался поместить следующий T-SQL в свойство SQLStatement

INSERT INTO FilesProcessed 
   (ProcessedOn, ProviderCode, FinancialMonth, 
   FileName, Status, Comments) 
SELECT     GETDATE(), 'ABC' , 201006, 
   'ABC_201005_Testology.csv', 
   'Imported','Success' 

Я попытался жестко запрограммировать значения выше, чтобы заставить его работать

Это столбцы в таблице, которую я вставляю в

Column_name     Type         Computed  Length
fileID          int          no          4
ProcessedOn     datetime     no          8
ProviderCode    nchar        no          6
FinancialMonth  int          no          4
FileName        nvarchar     no        510
Status          nvarchar     no         40
Comments        nvarchar     no        510

Это код Expression, который передает свойство SQLStatementSource

"INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, FinancialMonth, 
  FileName, Status, Comments) SELECT     GETDATE() AS ProcessedOn, '"
  + @[User::providerCode] + "' , " 
  + (DT_STR,6,1252)@[User::financialMonth] + ", '" 
  + @[User::fileName] + "', 'Imported' AS Status,'Successfully' AS Comments "

К сожалению, мне чего-то не хватает, и я не могу заставить его работать.

Я получаю сообщение об ошибке ... Ошибка: 0xC002F210 при записи в журнал FilesProcessed, Выполнить задачу SQL: Выполнение запроса "INSERT INTO Файлы Обработано (Обработано, ProviderCode, FinancialMonth, Имя файла, статус, комментарии) SELECT
GETDATE (), «ABC», 201006, 'DAG_201005_Testology.csv', «Импортировано», «Успешно» следующая ошибка: «ошибка произошло при извлечении результата в переменную типа (DBTYPE_I2) ". Возможные причины сбоя: проблемы с запросом, свойство "ResultSet" установлены неправильно, параметры не установлены правильно, или соединение не установлено правильно.

Пожалуйста,

а). Посоветуйте, является ли задача «Выполнение SQL» способом сделать то, что я хочу.

* 1 035 * б). Дайте мне любые указатели или подводные камни, чтобы посмотреть и проверить.

Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 28 июля 2010

ОК, вот что я сделал.

Я создал задачу «Выполнение SQL» и настроил ее следующим образом: -

General Tab
  ConnectionType = OLE DB
  SQLSourceType = Direct Input
  SQLStatement = (left blank)
  BypassPrepare = True
  ResultSet = None

Parameter Mapping
  (none - leave blank)

Result Set
  (none - leave blank)

Expressions
  SQLStatementSource = "INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, FinancialMonth, FileName, Status, Comments) SELECT GETDATE(), '" + @[User::providerCode] + "' , " + (DT_STR,6,1252)@[User::financialMonth] + ", '" + @[User::fileName] + "', 'Import - Success', '" + @[User::fileComments] + "'"

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

Постройте выражение медленно, регулярно проверяя кнопку Parse expression.

1 голос
/ 22 июля 2010

убедитесь, что типы данных VALUES соответствуют типам данных столбца назначения.

см .: http://social.msdn.microsoft.com/forums/en-US/sqlintegrationservices/thread/e8f82288-b980-40a7-83a6-914e217f247d/

0 голосов
/ 23 июля 2010

В приведенном выше определении таблицы FinancialMonth как тип данных int как

FinancialMonth int no 4

при вставке литья как

(DT_STR, 6,1252) @ [User :: financialMonth]

Мне кажется, что это просто несоответствие типов данных определению целевой таблицы.

спасибо

Правдин

0 голосов
/ 22 июля 2010

Пара умозрительных предложений

  1. В сообщении об ошибке говорится, что при извлечении результата в переменную типа (DBTYPE_I2) произошла ошибка. Но это прямое утверждение вставки. Не должно быть результата, за исключением затронутых строк. У вас есть какие-либо сопоставления параметров, ошибочно установленные на Output?

  2. Что если вы попытаетесь запустить SQL-запрос из сообщения об ошибке прямо в Management Studio? Это дает вам ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...