У меня есть сценарий, в котором я пытаюсь выбрать некоторые данные в таблице t1 и t2 с удаленного сервера (на котором у меня есть только права на чтение) S1 в БД db1 с другого удаленного сервера (на котором я DBO, но на самом деле не все разрешения, чтобы я мог делать все, что захочу) S2 в DB db2 в таблицу t1 через пакет SSIS.
S1 и S2 являются связанными серверами. Я связался с S1 с S2 через объектный сервер в SSMS.
Теперь я создал хранимую процедуру sp1 в S2.db2, в которой есть несколько операторов select из двух разных таблиц с соединением для диапазона дат, которые передаются в качестве параметров в sp1.
например, как показано ниже:
SELECT * from s1.db1.schema1.t1 LEFT JOIN s1.db1.schema1.t2 ON [УСЛОВИЕ] ГДЕ [УСЛОВИЯ] Теперь в моем пакете SSIS есть задача потока данных, которая имеет источник и место назначения OLE DB со строкой подключения к s2.db2
В источнике я вызываю вышеупомянутый запрос в команде SQL напрямую и заполняю целевую таблицу S2.db2.t1, и она работает нормально.
Но выдает ошибку, когда я пытаюсь сделать следующее
- Создайте 2 переменные DATETIME уровня пакета как v1, v2 и передайте значения по умолчанию - нет проблем
- В OLE DB SOURCE->CONNECTION STRING -> SQL COMMAND -> EXEC sp1?,? - Нет проблем
- нажмите на вкладку ПАРАМЕТРЫ и выберите оба пользовательских параметра для параметра 0 и параметра 1 - нет проблем
- Теперь, когда я говорю «ОК» для окна SQL COMMAND, это дает мне ошибку следующим образом
Ошибка:
НАЗВАНИЕ: Microsoft Visual Studio
Ошибка в FII54_CBI_TM51 [FII54_CBI 1]: код ошибки служб SSIS DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x80004005. Доступна запись OLE DB. Источник: «Собственный клиент Microsoft SQL Server 10.0». Hresult: 0x80004005 Описание: «Конфликт типов операндов: int несовместим с датой».
Ошибка FII54_CBI_TM51 [FII54_CBI 1]: невозможно получить информацию о столбцах из источника данных. Убедитесь, что ваша целевая таблица в базе данных доступна.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Исключение из HRESULT: 0xC020204A (Microsoft.SqlServer.DTSPipelineWrap)
КНОПКИ:
OK
Я понимаю, что означает ошибка, но я не понимаю, почему она вообще выдает эту ошибку.
Я ценю, если кто-то может помочь мне решить эту проблему? Это довольно срочно для меня.
sp_help sp1
Отредактируйте свой тикет с информацией о параметрах, которые принимает процедура. 2) В источнике OLE DB сделайте снимок экрана с окном «Установить параметры запроса» (доступно, если щелкнуть «Параметры...»). 3) Снимите снимок экрана с окном «Переменные». 4) Можете ли вы создать фиктивный процесс sp2 в той же базе данных, что и sp1? Пусть он имеет ту же сигнатуру, что и sp1, но не запрашивает никаких таблиц и, конечно же, не затрагивает связанный сервер. Это поможет определить, связана ли проблема со связанным сервером, вашим запросом или пакетом. - person billinkc   schedule 08.11.2011