我已将自定义PipelineComponent从.net 3.5升级到4.0,并将更新的引用从... Server \ 100 \ SDK ...更新为... Server \ 110 \ SDK ... 版本dll已复制到C:\ Program Files \ Microsoft SQL Server \ 110 \ DTS \ PipelineComponents \以及C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ DTS \ PipelineComponents \并安装在GAC C中:\的Windows \ Microsoft.NET \组件\ GAC_MSIL
我已经为SQL2012安装了完整的SQL Server 2012和Visual Studio Data Tools。
在Visual Studio中编辑SSIS包期间,数据流选项卡上的SSIS工具箱中可以看到包。
在Visual Studio 2008中针对SQL2008R2创建的程序包的Visual Studio 2010/2012中的更新过程中,出现以下错误:
错误0xc004801f:DataFlowTaskName:“PC FxRate Lookup”的组件元数据无法升级到组件的较新版本。 PerformUpgrade方法失败。
错误0xc001f429:程序包升级:程序包PackageName.dtsx的加载失败。
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible"), ComVisible(true)]
[
DtsPipelineComponent(
CurrentVersion = 6,
DisplayName = "PC FxRate Lookup",
Description = "send to Output the corresponding value in a map via key from input for a given ScenarioId or a default value")
]
public class PCFxRateLookup : PCDictionaryLookup<string, double?>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible"), ComVisible(true)]
[
DtsPipelineComponent(
ComponentType = ComponentType.Transform,
DisplayName = "PC Dictionary Lookup",
Description = "Output the corresponding value in a map via key from input for a given ScenarioId or a default value")
]
public abstract class PCDictionaryLookup<T1, T2> : PipelineComponent
{
有什么建议吗?
答案 0 :(得分:0)
问题出在自定义SSIS PipelineComponent中。在SSIS数据流中添加新组件没有问题,但升级 - 没有。 我必须从PipelineComponent基类重写PerformUpgrade方法,如下所示:
public override void PerformUpgrade(int pipelineVersion)
{
DtsPipelineComponentAttribute attribute = (DtsPipelineComponentAttribute)Attribute.GetCustomAttribute(this.GetType(), typeof(DtsPipelineComponentAttribute), false);
int currentVersion = attribute.CurrentVersion;
ComponentMetaData.Version = currentVersion;
}
在构建项目之后,将dll放在GAC和正确的SQL文件夹中我必须使用记事本更新* .dtsx包。
1)Version = 2.0.0.0&gt;&gt;版本= 4.0.0.0(自定义SSIS包的.net输入参数)。
2)Version = 3.0.0.0&gt;&gt;版本= 4.0.0.0(自定义SSIS包的新版本)。
之后,只需使用向导更新SSIS解决方案。
就是这样。