使用 UDF 的 SSIS 中的“无法准备语句”错误

我在 SSIS '08 中有一个带有 OLEDB 数据源的数据流任务。查询是这样的:

SELECT DISTINCT
    dbo.udf_CreateCCISSentenceDuration(probation_year, probation_month, probation_day)
FROM sentence

我减少了查询只是为了使它更具可读性。无论如何,我都会收到以下错误:

Error at 11012 DATA [Data Records [27]]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred.
Error code: 0x80040E14
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E14
Description: "Statement(s) could not be prepared.".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E14
Description: "Cannot find either column "dbo" or the user-defined function or aggreate
"dbo.udf_CreateCCISSentenceDuration", or the name is ambiguous.".

此查询在 SSMS 中运行良好。如果我删除“dbo”。所有者部分,我得到“'udf_CreateCCISSentenceDuration' 不是可识别的内置函数名称。”。我运行它的数据库是一个 SQL 2005 实例。我已经进行了搜索,但找不到与此错误和 UDF 相关的任何内容。任何帮助是极大的赞赏!

stack overflow "Statement(s) could not be prepared" error in SSIS using a UDF
原文答案

答案:

作者头像

这可能不是真正的 SSIS 问题。为帮助确定它是否存在,请尝试在 SSIS 外部重现此错误以通过使用相同的函数调用编写存储过程来调试它。本质上,您需要将存储过程存储在您的 oledb 连接发出请求的服务器/数据库实例上。

如果您遇到类似的错误,请对服务器、数据库、所有者和最终函数进行 4 部分引用以查看是否有效(例如 [myServerWhereFunctionIs].[myDatabaseInstanceWhereFunctionIs].[ownerSchemaOfFunction].udf_Function

作者头像

对我来说,查询是该错误的问题。修改我的查询后,它工作正常。因此,请根据错误消息中的描述完成您的查询。