脚本组件中的自定义加密DLL的SSIS数据流非常慢

时间:2016-05-09 00:27:16

标签: c# sql-server encryption ssis

我正在进行数据转换,旧数据库中的敏感数据未加密。我们正在构建一个新的数据库和前端应用程序,并且在我转换数据时,我需要加载两列,因为它们被加载到新数据库中。我使用了我需要的3列(一个唯一的ID和需要加密的2列)的临时表(OLE DB SQL数据库连接)中的简单选择查询,然后我有一个脚本组件包含C#代码引用GAC中的自定义dll,然后处理行,然后将其加载到具有ID的另一个临时表(OLE DB SQL数据库)中,并使用加密的2列值。我有2.3M行要处理,我使用快速加载选项与TABLE LOCK和CHECK CONSTRAINTS(确实没有任何)用于目标登台表。但是,这个过程需要14到24小时才能完成!加载时间的变化来自2个不同的环境,一个是我的PC - 运行速度更快,另一个来自虚拟服务器,它装载了更多的内存 - 奇怪地运行得更慢。无论如何,这些时间都不是好的,我只是想知道我能做些什么来显着提高速度呢?

以下是脚本组件中的C#脚本:

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
  public override void Input0_ProcessInputRow(Input0Buffer Row)
   {
       Row.ClaimNumberEncr = DAV.CMS.Core.Common.Crypto.EncryptFromStringAES (Row.ClaimNumber, "abc123defg").Entity; 
       Row.SSNEncr = DAV.CMS.Core.Common.Crypto.EncryptFromStringAES (Row.AlternateClaimantID, "abc123defg").Entity;
    }
}

1 个答案:

答案 0 :(得分:0)

我看过这两种环境,BINGO,我的笔记本电脑实际上有4个CPU,而虚拟服务器只有2个。虽然我的笔记本电脑只有8GB的RAM而VS有18GB,显然差别在于# CPU的。我要让他们在VS上加倍我的CPU,看看是否有帮助。感谢您的建议,我想我们只需要处理基于加密占用时间的处理时间,但尝试加强我的VS并尽可能快地将其降低。