請參閱下面的代碼片斷: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位模式下缺少組件?
謝謝。我已經添加了該問題的更新。你可以看一下嗎?模糊查找在64位模式下丟失。 – w0051977