65.9K
CodeProject 正在变化。 阅读更多。
Home

将现有 DSTX SSIS 包从 SQL Server 2005 迁移到 2008 R2 并自动化的方法

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2011年3月9日

CPOL

2分钟阅读

viewsIcon

23208

本文将为将无错误 dtsx 包迁移到更高版本 SQL Server SSIS 提供第一步。

目录

  1. 1.引言
  2. 2. 实时场景
  3. 3. 先决条件
  4. 4. 代码实现
  5. 5. 参考资料
  6. 6. 结论

1.引言

本文的目标是帮助开发人员创建自动化组件,用于涉及将现有的 dtsx 包从 Sql Server 2005 迁移到 SQL Server 2008 R2 的任务。 想法是展示给定 dtsx 包可能需要进行更改的最常见的迁移。 唯一的方法是更改包中变量的设置属性,并以 xml 格式保存 dtsx。

2. 实时场景

  • 如果任何任务包含大量的 dtsx 包,那么手动更改将需要大量的工作并增加迁移时间。
  • 此迁移/自动化仅针对文件系统 SSIS 包。
  • 此迁移/自动化涉及删除常见错误,例如保护级别,其中 dtsx 包使用用户密钥加密。DPAPI 算法用于加密包中的数据。
  • 使用上述方法,可以更改 dtsx 包的设置属性,并克服迁移过程中发生的错误。

    3. 先决条件

  • VS2005 .net 2.0
  • 命名空间:Microsoft.SqlServer.Dts.Runtime 程序集:Microsoft.SqlServer.ManagedDTS
  • 物理位置:C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SQLServer.ManagedDTS.dll
  • BIDS IDE 用于运行和测试 SSIS dtsx 包

    4. 代码实现

    在控制台应用程序中添加程序集 Microsoft.SqlServer.ManagedDTS 的引用。 需要从 SQl Server 安装集成服务组件才能获取此 dll。 使用以下代码,可以更改在开发过程中添加的 dtsx 包的变量属性。

    			
    using Microsoft.SqlServer.Dts.Runtime;
    namespace UpdateDTSX_SSIS_Properties_Pkg
    
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Physical path of dtsx package
                string dtsxOld = @"D:\Test2005.dtsx";
                string dtsxUpgrade = @"D:\Test2008.dtsx";
                
                //Load package
                Application app = new Application();
                Package packageDTSX = app.LoadPackage(pkg, null);
    
                // Set properties value as required
    
                DTSProtectionLevel dtsProtectionLevel1 = packageDTSX.ProtectionLevel;
    
                Console.WriteLine("Old ProtectionLevel Encypted One = " + dtsProtectionLevel1);
                
                //Change protectionlevel from EncryptSensitiveWithUserKey To DontSaveSensitive
                packageDTSX.ProtectionLevel = DTSProtectionLevel.DontSaveSensitive;
                
                app.SaveToXml(dtsxUpgrade,packageDTSX,null);
                
                DTSProtectionLevel dtsProtectionLevel2 = packageDTSX.ProtectionLevel;
    
                Console.WriteLine("New ProtectionLevel DontSaveSensitive = " + dtsProtectionLevel2);
                Console.ReadLine();
            }
        }
    }
    		

    目前就到这里为止,使用上述方法可以更改所需的 dtsx 包属性,并将 dtsx 文件保存为 xml 格式。

    5. 参考资料

    http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.application.upgrade.aspx

    http://msdn.microsoft.com/en-us/library/ms188550.aspx

    http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.dtsprotectionlevel.aspx

    6. 结论

    我尽量使本文简短,并将其作为开始将 dtsx 转换从一个版本到另一个版本的自动化的参考。 如果有任何意见或疑问,请发表评论。

  • © . All rights reserved.