2016-08-23 127 views
0

私が実行される次のエラーを与えるSSISパッケージを持っている:SSIS SQL実行タスクエラー

エラー:0xC002F210でSQLタスク1は、SQLタスクを実行し実行します。クエリの実行「varchar型として@POIDを宣言(50) Set @POID = 636268 ... "次のエラーで失敗しました:"単一列結果タイプの結果列に値を設定できません。クエリが空の結果セットを返しました。考えられる失敗の理由:クエリ、「ResultSet」プロパティが正しく設定されていない、パラメータが正しく設定されていない、または接続が正しく確立されていないなどの問題。 タスクに失敗しました:SQL実行タスク1

パッケージがあるの下にリストされた特性を持つ単一のSQL実行タスク:

一般プロパティ 結果セット:単一の行

CONNECTIONTYPE:OLEDB 接続:サーバーに接続 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:偽 BypassPrepare:偽

パラメータマッピングプロパティ

なし

のResultSet

ResultName変数名

0ユーザー:PONUMBER

1ユーザー:StoreNameを

2ユーザー:StoreEmail

3ユーザー:サプライヤー

4ユーザー:DeliveryDate

誰も私を助けることができれば、私は感謝問題がどこにあるのかをsuggetingすることによって、この問題を解決します。

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 

ありがとうございました。

+0

このクエリはssmsで結果セットを返しますか?返される行の数あなたは2008年と2012年の両方ではなく、あなたが使用しているssisのバージョンだけをタグ付けしてください。 – Matt

+0

こんにちはマット、私はSSMSについてはわかりません。返される行は基本的に0です。私はSSIS 2008を使用しています。 – Shivang

+0

レコードが返されない場合、このタスクは何をしますか?2レコードが返された場合はどうなりますか?たとえば、SQLタスクを事前に使用してレコードを数え、カウントに基づいていくつかの異なるワークフローを実行できます。 –

答えて

0

クエリから0レコードが返され、結果セットに値を設定しようとすると、これがエラーになります。常に1つの結果を返すようにクエリを変更すれば、エラーはなくなります。

+0

私はこれを修正することができません!私たちを手伝ってくれますか ?ありがとうございました – Shivang

+1

データベースへのアクセス、ビジネスロジックと給与計算の説明がなくても、すべてのケースで単一のレコードを返すようにクエリを書き直す方法はありません。 Execute SQLタスクのResultSetを "Single Row"に設定し、クエリが0レコードを返した場合、エラーが発生します。 – btberry

関連する問題