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

问题描述 投票:0回答:2

我在 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 相关的任何内容。非常感谢任何帮助!

sql-server ssis
2个回答
0
投票

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

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


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.