2015-10-06 48 views
1

請參閱下面的代碼片斷:HRESULT:0xC0048021在64位模式

Dim fuzzyLookup As IDTSComponentMetaData100 = pipeline.ComponentMetaDataCollection.[New]() 
     fuzzyLookup.ComponentClassID = "{5056651F-F227-4978-94DF-53CDF9E8CCB6}" 
     Dim destDesignTimeComponentFuzzy As IDTSDesigntimeComponent100 = fuzzyLookup.Instantiate() 
     destDesignTimeComponentFuzzy.ProvideComponentProperties() 'line 4 

我已導入了以下命名空間:

Microsoft.SqlServer.Dts.Runtime 
Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Microsoft.SqlServer.Dts.Runtime.Wrapper 

我已經添加了下列參考文獻:

Microsoft.SQLServer.dtspipelinewrap.dll 
Microsoft.SQLServer.dtsruntimewrap.dll 
Microsoft.SQLServer.manageddts.dll 

當我添加32位引用的整個代碼運行,但沒有任何反應,即package.execute什麼都不做 - 模糊查找不起作用(因爲我相信:https://connect.microsoft.com/SQLServer/feedback/details/634516

因此,我已經嘗試將64位引用添加到上面的3個DLL。然後,我得到代碼行4上的異常:HRESULT:0xC0048021。爲什麼我在64位模式下得到這個異常?

我所做的研究表明組件類ID是錯誤的。是否有用於64位模糊查找的不同組件類ID?

更新15年7月10日

我已經運行代碼如下:

Public Shared Sub LoopComponents() 
     Dim fileName As String = "C:\Development\ProgrammaticLookup\64Bit.txt" 
     Dim application As New Application() 
     Dim componentInfos As PipelineComponentInfos = application.PipelineComponentInfos 
     Dim i As Integer = 0 
     For Each componentInfo As PipelineComponentInfo In componentInfos 
      i = i + 1 


      Using fs As New FileStream(fileName, FileMode.Append, FileAccess.Write) 
       Using sw As New StreamWriter(fs) 
        sw.WriteLine(componentInfo.Name + vbTab + componentInfo.CreationName) 
       End Using 
      End Using 
     Next 
     Console.Read() 
    End Sub 

當我運行在32位模式下上述代碼中,有42個條目添加到日誌文件,包括:模糊查找DTSTransform.BestMatch.2

當我以64位模式運行代碼時,只有11個條目添加到日誌文件。模糊查找不是條目之一。爲什麼在64位模式下缺少組件?

回答

0

您使用SQL Server 2012或更高版本嗎?如果是的話,你可能會使用DTSX2,它看起來像模糊查找有{E4A5F949-EC93-45AB-8B36-B52936257EC2}類ID,根據this document - 頁258

對於在DTSX和DTSX2,check here差別的概述。

+0

謝謝。我已經添加了該問題的更新。你可以看一下嗎?模糊查找在64位模式下丟失。 – w0051977

相關問題