簡體   English   中英

SSIS OLE DB 記錄可用。 來源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005,無法確定元數據

[英]SSIS An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005, The metadata could not be determined

盡管我已經為結果集提供了動態 SQL,但我收到以下錯誤。但它要求相同。

OLE DB 記錄可用。 來源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“無法確定元數據,因為語句‘EXEC sp_executesql @ExecSQL’包含動態 SQL。考慮使用 WITH RESULT SETS 子句顯式描述結果集。”。

錯誤:0xC0202080 在攝取 CSV 文件 - 流,OLE DB 命令 1 [281]:無法從 SQL 命令的參數中檢索目標列描述。

下面的代碼在 MS SQL Management Studio 查詢中運行良好。 但它在 SSIS 中給出了錯誤

DECLARE @tablename nvarchar(200),  @tablevalue nvarchar(1)

SELECT @tablename =CAST(FLOOR(RAND()*(100000-5+1)+5) as nvarchar)

Select @tablevalue='0'

DECLARE   @ExecSQL NVARCHAR(max)

SET @ExecSQL = 'SELECT d.tablename, d.tablevalue INTO mws_ssis_cust_senti_integration'+ @tablename+
+ ' from  ( select ''' + 'mws_ssis_cust_senti_integration' + @tablename + ''' as tablename, ''' + @tablevalue + ''' as tablevalue ) as d '


EXEC sp_executesql @ExecSQL

Set @tablename = N'mws_ssis_cust_senti_integration'+ cast(@tablename as nvarchar)

Set  @ExecSQL = 'select * from  ' + @tablename

EXEC sp_executesql @ExecSQL
WITH RESULT SETS
(
 (
 tablename varchar(max), tablevalue varchar(1)
 )
)

為什么要在 OLE DB 命令中使用此命令?!

參考官方文檔:

OLE DB 命令轉換為數據流中的每一行運行 SQL 語句。 例如,您可以運行 SQL 語句來插入、更新或刪除數據庫表中的行。

它不用於 select 語句。 我認為您正在尋找Execute SQL TaskOLE DB Source with SQL Command access mode or Lookup transformation

1- 執行 SQL 任務

您可以將查詢結果存儲在類型為 object 的 SSIS 變量中。有很多文章說明了這個過程:

請注意,如果您在 SSIS 中有 @tablename 和 @tablevalue 變量,則可以使用表達式以更簡單的方式構建此語句並在以后執行它。

2 - OLE DB 源

您可以使用 OLE DB 源從類似的命令生成行,您可以檢查以下答案,因為它提供了一些有關在 OLE DB 源中使用結果集的有用信息:

此外,您可以查看以下文章以獲取一些有用的信息:

3 - 查找轉換

我不確定它是否支持類似的查詢,但您可以在以下鏈接中閱讀有關此組件的更多信息:

您是否嘗試過將整個語句包裝在存儲過程中,然后從 SSIS 調用該存儲過程?

純粹是在黑暗中拍攝,但在過去,當我將復雜的 sql 語句,尤其是那些涉及創建臨時表的語句,從 SSMS 移到生產環境(例如,在應用程序或 ssrs 報告中)時,查詢會因不清楚而失敗原因。 一旦我將實際的 sql 移動到 sp 中,錯誤就會神奇地消失,對查詢的實際機制進行 0 次更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM