Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/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
Ssis 使用EZAPI EzDerivedColumn和输入列接收警告消息_Ssis_Ssis 2012_Ezapi - Fatal编程技术网

Ssis 使用EZAPI EzDerivedColumn和输入列接收警告消息

Ssis 使用EZAPI EzDerivedColumn和输入列接收警告消息,ssis,ssis-2012,ezapi,Ssis,Ssis 2012,Ezapi,我正在与EZApi合作,以帮助创建一个包来为转换准备数据。它在数据移动方面起作用。但是,在设计器中打开包时,在派生列和InputColumns被设置为只读的周围会出现警告消息 警告148验证警告。暂存表名: {AA700319-FC05-4F06-A877-599E826EA833}:附加 Columns.Inputs[派生列输入].Columns[数据源ID]“在 “附加列”的使用类型为只读,但未被引用 表情。从可用输入列表中删除该列 列,或在表达式中引用它。stagevell.dtsx 0

我正在与EZApi合作,以帮助创建一个包来为转换准备数据。它在数据移动方面起作用。但是,在设计器中打开包时,在派生列和InputColumns被设置为只读的周围会出现警告消息

警告148验证警告。暂存表名: {AA700319-FC05-4F06-A877-599E826EA833}:附加 Columns.Inputs[派生列输入].Columns[数据源ID]“在 “附加列”的使用类型为只读,但未被引用 表情。从可用输入列表中删除该列 列,或在表达式中引用它。stagevell.dtsx 0 0

我可以在设计器中将它们手动更改为读/写或取消选择,警告就会消失。但是,我无法以编程方式使其工作

我尝试过从元数据中删除这些列,但没有从组件中删除它们,因此这些列仍然是在xml中创建的

XML部分

<externalMetadataColumn refId="Package\Full\Staging TableName\DestinationStaging TableName.Inputs[OLE DB Destination Input].ExternalColumns[DataSourceID]" dataType="i4" name="DataSourceID" />
下面是我用来创建具有OLEDB源、派生列和OLEDB目标的数据流任务的代码

请注意,在派生列附加到源之后,输入列才会出现:dc.AttachTo(Source)


你看过你的衍生专栏的代码了吗?我没有时间深入研究。我相信我最初是利用你的帖子来指导我的方向的。我唯一没有的是在最后一个目标附加到派生列之后的LinkAllInputsOutput调用。这样做没有什么区别。你收到了什么警告?您在回答中提到您在UI中收到警告。我回答了这个问题的副本
0xC0208010
-1071611888
DTS_E_CANTDELETEINPUT
An input cannot be deleted from the inputs collection.
 public class EzMyDataFlow : EzDataFlow
    {
        public EzMyDataFlow(EzContainer parent, EzSqlOleDbCM sourceconnection,
          EzSqlOleDbCM destinationconnection, string destinationtable, string sourcecomannd, string dataflowname)
            : base(parent)
        {
            Name = dataflowname;

            EzOleDbSource source = new EzOleDbSource(this);
            source.Connection = sourceconnection;
            source.SqlCommand = sourcecomannd;
            source.AccessMode = AccessMode.AM_SQLCOMMAND;
            source.Name = string.Format("Source_{0}", dataflowname);

            EzDerivedColumn dc = new EzDerivedColumn(this);

            dc.Name = "Additional Columns";

            // Setup DataSourceID
            string columnName = DBSchema.ReportFoundationalColumns.DataSourceID;
            dc.InsertOutputColumn(columnName);
            dc.SetOutputColumnDataTypeProperties(columnName, DataType.DT_I4, 0, 0, 0, 0);
            var c = dc.OutputCol(columnName);
            var property = c.CustomPropertyCollection["Expression"];
            property.Name = "Expression";
            property.Value = "@[TM::SourceDatabaseID]";
            property = c.CustomPropertyCollection["FriendlyExpression"];
            property.Name = "FriendlyExpression";
            property.Value = "@[TM::SourceDatabaseID]";

            dc.AttachTo(source);

            EzOleDbDestination destination = new EzOleDbDestination(this);
            destination.Table = destinationtable;
            destination.Connection = destinationconnection;
            destination.Name = string.Format("Destination{0}", dataflowname);
            destination.AttachTo(dc);
        }
    }