Служба SSIS 2008 Выполнение сопоставления выходного параметра SQL datetime2 проблема - PullRequest
3 голосов
/ 18 мая 2009

Я пытаюсь использовать задачу «Выполнение SQL» в SSIS 2008 для сопоставления выходного параметра процедуры хранилища с переменной пакета.

Переменная пакета имеет тип SSIS DateTime, а параметр процедуры хранения - тип SQL DATETIME.

Оператор SQL равен EXEC GetCurrentDate @CurrentDate=?, и на экране сопоставления параметров параметр сопоставляется с переменной пакета с указанием направления Выход и тип данных DBTIMESTAMP.

Когда я запускаю пакет, я получаю следующую ошибку:

[Выполнить задачу SQL] Ошибка: выполняется запрос "EXEC GetCurrentDate @ CurrentDate =? "не удалось с следующая ошибка: «Тип значение присваивается переменной «User :: CurrentDate» отличается от текущий тип переменной. Переменные могут не меняйте тип во время исполнения. Типы переменных являются строгими, за исключением переменные типа Объект. ". Возможный причины отказа: проблемы с запрос, свойство "ResultSet" не установлено правильно, параметры не установлены правильно, или соединение не установлено правильно.

Если я запускаю трассировку по выполняемому запросу, я вижу, что тип принимается как datetime2:

declare @p3 datetime2(7)
set @p3=NULL
exec sp_executesql N'EXEC GetCurrentDate @CurrentDate=@P1 ',N'@P1 datetime2(7) OUTPUT',@p3 output
select @p3

Кто-нибудь знает, почему предполагается, что типом является datetime2?

Спасибо

Ответы [ 2 ]

3 голосов
/ 18 мая 2009

Нашли ответ в сообщении об ошибке в Micorsoft Connect:

Мы закрываем этот случай, так как это ожидаемое поведение и результат нового изменения типа sql datetime. Вы используете собственный менеджер соединений oledb для задачи sql, в процессе взаимодействия COM мы используем VARIANT для хранения значения, и единственный способ предотвратить потерю данных - сохранить значение как вариант BSTR. Если вы измените User :: dateParam на тип String, он будет работать, или вы можете переключиться на использование диспетчера управляемых соединений для обхода взаимодействия COM.

http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=307835

0 голосов
/ 18 мая 2009

Попробуйте указать параметры входа / выхода как DATE вместо DBTIMESTAMP в задаче служб SSIS.

Это, безусловно, работает в пакетах SSIS 2005, над которыми я работал.

Также стоит взглянуть на эту ссылку , которая охватывает это, а также пару других проблем с SSIS и датами.

...