0

在我的 SSIS 包中(在 Sql 2008 R2 上),我有一个 TransferObjectsTask 任务,该任务有一个名为 DatabaseDetails 的属性,它属于 DatabaseInfoCollection 类型。我要做的是为此属性指定一个值,方法是事先在脚本任务中准备它并将其保存在对象类型的变量中,然后将此变量传递给 TransferObjectsTask 任务的 DatabaseDetails 属性。很简单,对吧?

但是,正如您可能已经猜到的那样,我不能这样做。当我在表达式中指定变量时,我得到...

“无法评估表达式/表达式中不支持变量的数据类型。”

我怎样才能解决这个问题?

实际上没有什么可以“评估”的,因为表达式只有一个变量名。如果您甚至无法为其指定变量,为什么任务会在表达式中公开属性?没有意义。

我错过了什么??

谢谢。

4

2 回答 2

1

您不能在表达式中引用对象。对象数据类型过于通用。您可以从字面上将任何东西推入对象数据类型。想象一下将 100 个数据库的列表推入一个对象变量(使其成为一个数组),然后将该变量传递给 oledb 连接管理器的 InitialCatalog 属性。连接管理器不仅不知道如何处理该对象,而且即使知道了,它也不能一次连接到 100 个数据库。

你到底想做什么?我对 TransferObjectsTask 不熟悉(并且自从产品问世以来一直在做重要的 SSIS 工作)。这是自定义任务吗?它不包含在 SQL 2012 的控制流任务中。有一个传输 SQL Server 对象任务。你指的是这个吗?如果是这样,Powershell 或像 Red Gate 的 SQL Compare 这样的第 3 方工具将是一个更好的选择。SSIS 非常擅长 ETL(在缓冲区中提取、转换,以及从/到各种来源和目的地加载数百万/数十亿条记录)。不过,在管理任务上有点笨拙。我永远不会将它用于简单的管理任务,例如备份、架构更新部署或索引维护。

于 2012-08-17T02:50:49.983 回答
0

将对象添加到表达式是没有意义的。你怎么知道对象的结构。

你能更具体地说明你想要做什么吗?传输 SQL Server 对象任务只是将 对象从源传输到目标。你想在“DatabaseDetails”上设置什么(我找不到这个属性)

于 2012-08-17T13:56:57.500 回答