Ошибка выполнения задачи SQL в службах SSIS

У меня есть пакет SSIS, который при запуске выдает следующую ошибку:

Ошибка: 0xC002F210 при выполнении задачи 1 SQL, выполнение задачи SQL: выполнение запроса «Объявить @POID как Varchar (50) Установить @POID = 636268 ...» завершилось ошибкой со следующей ошибкой: «Невозможно заполнить столбцы результатов для тип результата с одной строкой. Запрос вернул пустой набор результатов. ". Возможные причины сбоя: проблемы с запросом, свойство ResultSet неправильно настроено, параметры установлены неправильно или соединение не установлено правильно. Ошибка задачи: выполнить задачу SQL 1

В пакете есть одна задача «Выполнение SQL» со свойствами, перечисленными ниже:

Общие свойства Набор результатов: одна строка

ConnectionType: OLEDB Connection: подключен к серверу SQLSourceType: SQL-запрос прямого ввода:

Declare @POID as Varchar(50)
Set @POID = 0
SELECT DISTINCT BizTalk_POA_HEADER.PONUMBER, FAN_Suppliers.SupplierName, FAN_Company_Details.CompanyName, FAN_Company_Details.[PrimaryEmail], BizTalk_POA_HEADER.[DeliveryDate]
FROM  BizTalk_POA_HEADER 
INNER JOIN FAN_PO_Details ON BizTalk_POA_HEADER.PONUMBER = FAN_PO_Details.PoNumber                                                                                                                                                                                                                                                                                                       
INNER JOIN FAN_PO ON FAN_PO_Details.PurchaseOrderID = FAN_PO.PurchaseOrderID     
INNER JOIN FAN_SupplierDetails ON FAN_PO.SupplierDetailsID =     FAN_SupplierDetails.SuppliersDetailsID 
INNER JOIN FAN_Suppliers ON FAN_SupplierDetails.SupplierID = FAN_Suppliers.SupplierID 
INNER JOIN FAN_Company_Details ON FAN_PO.CompanyID = FAN_Company_Details.CompanyDetailsID

WHERE    (BizTalk_POA_HEADER.PONUMBER = @POID)**

IsQueryStorePro: False BypassPrepare: False

Свойства сопоставления параметров

Никто

ResultSet

ResultName Имя переменной

0 Пользователь: PONUMBER

1 пользователь: StoreName

2 Пользователь: StoreEmail

3 Пользователь: Поставщик

4 Пользователь: DeliveryDate

Буду признателен, если кто-нибудь поможет мне решить эту проблему, указав, в чем проблема.

Затем я изменил свой запрос на следующий, так как приведенное выше показало ошибку преобразования в SSMS, когда я пытаюсь включить приведенное ниже в задачу «Выполнение SQL», запрос не сохраняется, по какой-либо причине?

SELECT    DISTINCT  BizTalk_POA_HEADER.PONUMBER,FAN_Suppliers.SupplierName,  FAN_Company_Details.CompanyName, 
FAN_Company_Details.[PrimaryEmail], BizTalk_POA_HEADER.[DeliveryDate]
FROM         BizTalk_POA_HEADER INNER JOIN
                  FAN_PO_Details ON CAST(BizTalk_POA_HEADER.PONUMBER AS VARCHAR(128))  = CAST(FAN_PO_Details.PoNumber AS VARCHAR(128)) INNER JOIN
                  FAN_PO ON FAN_PO_Details.PurchaseOrderID = FAN_PO.PurchaseOrderID INNER JOIN
                  FAN_SupplierDetails ON FAN_PO.SupplierDetailsID = FAN_SupplierDetails.SuppliersDetailsID INNER JOIN
                  FAN_Suppliers ON FAN_SupplierDetails.SupplierID = FAN_Suppliers.SupplierID INNER JOIN
                  FAN_Company_Details ON FAN_PO.CompanyID = FAN_Company_Details.CompanyDetailsID

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


person Shivang    schedule 23.08.2016    source источник
comment
И этот запрос возвращает набор результатов в ssms? Сколько строк возвращается? также только отметьте, какую версию ssis вы используете, а не 2008 и 2012.   -  person Matt    schedule 24.08.2016
comment
Привет, Мэтт, я не уверен в SSMS. Возвращенные строки в основном равны 0. Я использую SSIS 2008.   -  person Shivang    schedule 24.08.2016
comment
Что делать этой задаче, если записи не вернулись - ничего? Что делать, если возвращаются 2 записи? Например, вы можете заранее использовать задачу SQL для подсчета записей и на основе этого подсчета выполнить другой рабочий процесс.   -  person Nick.McDermaid    schedule 24.08.2016
comment
проблема в том, что ваш запрос возвращает 0 результатов, чтобы исправить это, измените ваш запрос, чтобы он не возвращал 0 результатов. У вас что-то не так с условием соединения, или таблица не соответствует вашим критериям, или ??? мы не можем это исправить, поэтому мы предлагаем вам взглянуть на SSMS и попытаться исправить свой запрос, чтобы определить правильные результаты и запрос, а затем обновить свой пакет с его помощью.   -  person Matt    schedule 24.08.2016
comment
Привет, Мэтт, я изменил запрос в своем исходном сообщении, он не сохраняется в Exceute SQL Task, есть идеи?   -  person Shivang    schedule 25.08.2016
comment
Он может быть заполнен expression. Если вы не знаете, что такое выражение, вам нужно почитать   -  person Nick.McDermaid    schedule 25.08.2016


Ответы (1)


Если по вашему запросу возвращено 0 записей, и вы пытаетесь заполнить набор результатов, вы получите эту ошибку. Измените свой запрос, чтобы он всегда возвращал один результат, а ошибка исчезла.

person btberry    schedule 24.08.2016
comment
Я не могу это исправить! Не могли бы вы помочь мне ? Благодарность - person Shivang; 24.08.2016
comment
Без доступа к вашей базе данных, объяснения вашей бизнес-логики и зарплаты я не могу сказать вам, как переписать ваш запрос, чтобы во всех случаях возвращать одну запись. Если вы установите ResultSet для задачи «Выполнение SQL» в значение «Одна строка» и ваш запрос вернет 0 записей, вы получите сообщение об ошибке. - person btberry; 24.08.2016