Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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
C# 4.0 派生列未映射到输出列?我该怎么办?_C# 4.0_Sql Server 2012_Ssis 2012 - Fatal编程技术网

C# 4.0 派生列未映射到输出列?我该怎么办?

C# 4.0 派生列未映射到输出列?我该怎么办?,c#-4.0,sql-server-2012,ssis-2012,C# 4.0,Sql Server 2012,Ssis 2012,包已成功生成。但是显示以下错误的派生列- 验证错误。这是编程的DataFlowTask派生列[2]:尝试解析表达式“Empid”失败,返回错误代码0xC00470A2。无法分析表达式。它可能包含无效元素或格式不正确。也可能存在内存不足错误。MyProgrammedDataflowTaskWithDerivedColumn.dtsx 下面是我的密码- //创建应用程序 应用程序app=新应用程序(); //创建一个包 Package pkg=新包(); //设置一些属性 pkg.Name=@“My

包已成功生成。但是显示以下错误的派生列- 验证错误。这是编程的DataFlowTask派生列[2]:尝试解析表达式“Empid”失败,返回错误代码0xC00470A2。无法分析表达式。它可能包含无效元素或格式不正确。也可能存在内存不足错误。MyProgrammedDataflowTaskWithDerivedColumn.dtsx

下面是我的密码-

//创建应用程序 应用程序app=新应用程序(); //创建一个包 Package pkg=新包(); //设置一些属性 pkg.Name=@“MyProgrammedDataflowTaskWithDerivedColumn”; //向数据库AdventureWorksLT2008R2添加连接 ConnectionManager connmgr=pkg.Connections.Add(“OLEDB”); connmrgravent.ConnectionString=“数据源=412-1682;初始目录=Empdb;提供程序=SQLNCLI11.1;集成安全性=SSPI;自动转换=False;”; ConnMgrAdventure.Name=@“AdventureWorks2008R2”; Description=@“OLEDB源的SSIS连接管理器”; //向数据库导入数据库添加连接 ConnectionManager ConnMgrImport_DB=pkg.Connections.Add(“OLEDB”); ConnMgrImport_DB.ConnectionString=“数据源=412-1682;初始目录=stgEmpdb;提供程序=SQLNCLI11.1;集成安全性=SSPI;自动转换=False;”; ConnMgrImport_DB.Name=@“Import_DB”; ConnMgrImport_DB.Description=@“OLEDB源的SSIS连接管理器”


通过添加下面的代码来验证派生列组件来解决此问题:-

            IDTSInput100 DerivedColumnInput = derived.InputCollection[0];
            IDTSVirtualInput100 DerivedColumnVirtualInput = DerivedColumnInput.GetVirtualInput();
            IDTSVirtualInputColumnCollection100 DerivedColumnVirtualInputColumns = DerivedColumnVirtualInput.VirtualInputColumnCollection;

            foreach (IDTSVirtualInputColumn100 virtualInputColumnDT in DerivedColumnVirtualInputColumns)
            {
                // Select column, and retain new input column
                if (virtualInputColumnDT.Name=="Empid")
                {
                    designDerivedColumns.SetUsageType(DerivedColumnInput.ID, DerivedColumnVirtualInput, virtualInputColumnDT.LineageID, DTSUsageType.UT_READONLY);
                }
        }
            IDTSInput100 DerivedColumnInput = derived.InputCollection[0];
            IDTSVirtualInput100 DerivedColumnVirtualInput = DerivedColumnInput.GetVirtualInput();
            IDTSVirtualInputColumnCollection100 DerivedColumnVirtualInputColumns = DerivedColumnVirtualInput.VirtualInputColumnCollection;

            foreach (IDTSVirtualInputColumn100 virtualInputColumnDT in DerivedColumnVirtualInputColumns)
            {
                // Select column, and retain new input column
                if (virtualInputColumnDT.Name=="Empid")
                {
                    designDerivedColumns.SetUsageType(DerivedColumnInput.ID, DerivedColumnVirtualInput, virtualInputColumnDT.LineageID, DTSUsageType.UT_READONLY);
                }
        }