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

时间:2013-01-25 16:30:13

标签: sql-server 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相关的任何内容。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

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

如果你得到类似的错误,请执行4部分引用服务器,db,owner和finally函数以查看是否有效(例如[myServerWhereFunctionIs]。[myDatabaseInstanceWhereFunctionIs]。[ownerSchemaOfFunction] .udf_Function

答案 1 :(得分:-1)

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