Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить ошибку 0xC0202009, возникающую при выполнении microsoft SQL Server Integration Services (SSIS) приведения параметров в SQL Server.
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 3001293
Симптомы
При запуске пакета служб SSIS выполнение завершается ошибкой из-за ошибки приведения параметров, и вы получите следующее сообщение об ошибке:
Код: 0xC0202009
Источник: задача Поток данных
Описание: код ошибки служб SSIS DTS_E_OLEDBERROR. Возникла ошибка OLE DB. Код ошибки: 0x80040E21.
Доступна запись OLE DB. Источник: "Microsoft SQL Server Native Client 11.0"
Hresult: 0x80040E21 Описание: "Недопустимое значение символа для спецификации приведения".
Для компонента источника OLE DB при наличии задачи потока данных, содержащей параметризованный запрос, может возникнуть эта проблема. Например, у вас есть следующий запрос:
SELECT mydate
FROM dbo.myTable
WHERE mydate >= convert (char, dateadd(year,-1,cast( ? as datetime)))
Примечание.
Эта проблема возникает только при попытке использовать компонент источника OLE DB вместе с параметрами в строке запроса. Маркер ?
параметра сопоставляется с параметром пользовательской переменной служб SSIS1, который определяется как строка 20080122
SSIS.
Причина
Проблема возникает из-за изменения поведения в том, как OLE DB обрабатывает параметры. В Microsoft SQL Server 2012 новая хранимая процедура sp_describe_undeclared_parameters
, замена набора fmtonly
возвращает другой результат для типа параметра. Это изменение по дизайну.
В примере запроса в разделе "Симптомы" исходное поведение заключается в описании?
.char(8)
Однако новый sp_describe_undeclared_parameters говорит, что ?
должно быть datetime
. Поэтому внутренний приведение из строки в datetime
строку, которая обрабатывается поставщиком OLE DB, возвращает сообщение об ошибке.
Решение
Чтобы устранить эту проблему, переопределите запрос, чтобы добавить дополнительный явный приведение к исходному типу данных. sp_describe_undeclared_parameters
Затем возвращает правильный ожидаемый тип. Чтобы устранить эту проблему в примере запроса, описанного в разделе "Симптомы ", обновите запрос следующим образом:
SELECT mydate
FROM dbo.myTable
WHERE mydate >= convert(char ,dateadd(year,-1, cast( cast( ? as char(8)) as datetime)))