gpt4 book ai didi

sql - SSIS OLE DB 记录可用。源 : "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005, 无法确定元数据

转载 作者:行者123 更新时间:2023-12-01 13:10:29 24 4
gpt4 key购买 nike

虽然我已经为结果集提供了动态 SQL,但我收到了以下错误。然而它要求相同。

An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The metadata could not be determined because statement 'EXEC sp_executesql @ExecSQL' contains dynamic SQL. Consider using the WITH RESULT SETS clause to explicitly describe the result set.".

Error: 0xC0202080 at Ingest The CSV File - Flow, OLE DB Command 1 [281]: Unable to retrieve destination column descriptions from the parameters of the SQL command.

以下代码在 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 命令中使用此命令?!

引用官方文档:

The OLE DB Command transformation runs an SQL statement for each row in a data flow. For example, you can run an SQL statement that inserts, updates, or deletes rows in a database table.

它不用于选择语句。我认为您正在寻找具有 SQL 命令访问模式或查找转换执行 SQL 任务OLE DB 源

1-执行SQL任务

您可以将查询结果存储在对象类型的 SSIS 变量中。有很多文章说明了这个过程:

请注意,如果您在 SSIS 中有@tablename 和@tablevalue 变量,则可以使用表达式以更简单的方式构建此语句并稍后执行它。

2 - OLE DB 源

您可以使用 OLE DB 源从类似的命令生成行,您可以检查以下答案,因为它提供了一些有关在 OLE DB 源中使用结果集的有用信息:

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

3 - 查找转换

我不确定它是否支持类似的查询,但您可以在以下链接中阅读有关此组件的更多信息:

关于sql - SSIS OLE DB 记录可用。源 : "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005, 无法确定元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60356032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com