Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server &引用;“无法编制报表”;SSI使用UDF时出错_Sql Server_Ssis - Fatal编程技术网

Sql server &引用;“无法编制报表”;SSI使用UDF时出错

Sql server &引用;“无法编制报表”;SSI使用UDF时出错,sql-server,ssis,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

我在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_createccissenteduration'不是可识别的内置函数名。”。我运行此操作的数据库是一个SQL 2005实例。我已经搜索过了,但找不到与此错误和UDF相关的任何内容。非常感谢您的帮助

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


如果出现类似错误,请对服务器、数据库、所有者和finally函数进行4部分引用,以查看其是否有效(例如,[myServerWhereFunctionIs]。[myDatabaseInstanceWhereFunctionIs]。[OwnerschemaOffFunction].udf_函数

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

并且您确定与SQL Server的连接到了正确的数据库吗?另外,您在SSMS中使用的帐户是否相同,或者至少每个帐户都相同任务,作为SSIS的任务?我的思路是,如果UDF调用的结果没有别名,SSIS将不知道该列的名称,因此无法准备元数据。请尝试将结果列命名为'as MyConcatenatedColumn',看看这是否会清除它。因此,在“每天学习新的东西“,我发现我可以将平面文件目标中的分隔符更改为逗号以外的其他内容。不确定这些年来我是如何错过了这一点。因此,我不必在查询中构建管道分隔字符串,而是可以让平面文件连接处理管道,允许我为每一列(以及我的UDF)添加别名。”,任务成功了。谢谢大家的帮助。非常感谢!@Gary–添加您的解决方案作为答案,并获得一些投票。比如什么?我们需要使用哪种语法?谷歌搜索结果似乎很差