2017-06-21 45 views
0

由於令人遺憾的原因,我的任務是自動生成一些SSIS包文件。即構建代表.dstx文件的XML字符串。預測SSIS參數映射中部分匹配的GUID

我也許已經實現了這一方式95%到和所遇到的絆腳石:(

一個封裝中的任務是「閱讀從源數據庫」包,它結合包。

<DTS:PackageParameter 
    DTS:CreationName="" 
    DTS:DataType="7" 
    DTS:DTSID="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" 
    DTS:ObjectName="LoadEndDate" 
    DTS:Required="True"> 
    <DTS:Property 
    DTS:DataType="7" 
    DTS:Name="ParameterValue">12:00:00 AM</DTS:Property> 
</DTS:PackageParameter> 

,然後將(2)的參數文件中的綁定到查詢以後:

name="ParameterMapping">"Parameter0:Input",{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX};"Parameter1:Input",{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX};</property> 
參數到SQL查詢 封裝參數在.dtsx程序文件的頂部被聲明

很明顯,在上面,我已經刪除了GUID來演示結構。

我看到了這一點,並乍一看相應的GUID都匹配。所以我實現了我的代碼來存儲我在頂部生成的第一個GUID,然後將它重新用於映射。

不幸的是,GUID並不完全匹配。當我打開我生成的包時,VS認爲SQL參數沒有被綁定。當我在VS中手動綁定它們時,它會用新的稍微改變了的GUID更新XML文件!

Declaration GUID: {09AFE89A-DD9F-499C-9D14-A5F937FE3B47} 
Mapping GUID:  {09AFE89A-2260-499C-9D14-A5F937FE3B47} 

Declaration GUID: {271E6086-3678-43A2-B5EF-DCB46DE91BA6} 
Mapping GUID:  {271E6086-C987-43A2-B5EF-DCB46DE91BA6} 

請注意第二塊GUID!

有沒有人有faintest的想法WTF正在進行,或者映射GUID如何從聲明GUID派生。

我今天下午將會自己調查這件事,並會發布我收集的任何進一步的知識。


UPDATE:

此外GUID雙(來自 「正常」 的手動創建的包採取)

{D8BE8459-2D2E-422D-ABD3-C7856F67CB24} 
{D8BE8459-D2D1-422D-ABD3-C7856F67CB24} 

{4E5A7104-3710-4DA4-8ECE-77A84838D9FA} 
{4E5A7104-C8EF-4DA4-8ECE-77A84838D9FA} 

{674D70A9-A68F-4BBA-BE44-7D1E3230D25E} 
{674D70A9-5970-4BBA-BE44-7D1E3230D25E} 

{4D7DD424-2CE4-488E-A146-44F13F2387AA} 
{4D7DD424-D31B-488E-A146-44F13F2387AA} 

{B6932587-FB99-4BDB-879F-E93CFD067A34} 
{B6932587-0466-4BDB-879F-E93CFD067A34} 

{5019F423-7DDE-422B-BF33-F9269494CBEA} 
{5019F423-8221-422B-BF33-F9269494CBEA} 

{7379E5EF-7D1B-4C01-9CF9-2D03F0E0702C} 
{7379E5EF-82E4-4C01-9CF9-2D03F0E0702C} 

{103E6151-235C-4688-9A3E-2F782B2B8611} 
{103E6151-DCA3-4688-9A3E-2F782B2B8611} 

{111337C4-BF81-4581-9CCE-B8C3D603D38C} 
{111337C4-407E-4581-9CCE-B8C3D603D38C} 

{0B1415C1-2A47-45B2-A61E-EB2F9E5F4A11} 
{0B1415C1-D5B8-45B2-A61E-EB2F9E5F4A11} 

{8A665C18-74BD-48A1-B270-723D83658F2D} 
{8A665C18-8B42-48A1-B270-723D83658F2D} 

{C2775F07-42EF-4DDB-80E5-33591C46F348} 
{C2775F07-BD10-4DDB-80E5-33591C46F348} 

{85242E06-D48C-47A2-BDC2-264B6D6F754A} 
{85242E06-2B73-47A2-BDC2-264B6D6F754A} 

{CFA3BAD6-CACB-464A-9519-D39A049678A0} 
{CFA3BAD6-3534-464A-9519-D39A049678A0} 

UPDATE: 更改後的塊沒有出現依賴於整個GUID的其餘部分:

{C2EB5307-CEC8-4617-BEE0-414BD875B146} 
{C2EB5307-3137-4617-BEE0-414BD875B146} 

{D2EB5307-CEC8-4617-BEE0-414BD875B146} 
{D2EB5307-3137-4617-BEE0-414BD875B146} 

更新: 更改的塊似乎不依賴於文件/包/項目/解決方案的其餘部分。

我解除了上述GUID之一(使用已知配對),並將其作爲包參數GUID粘貼到完全不同的完全不相關的SSIS解決方案中。它產生了同樣的配對。

+0

BIML對於自動生成軟件包顯然是很好的 –

+0

如果不是Biml,請使用對象模型。只需編寫XML就會給我帶來震動 – billinkc

回答

0

GUID的更改塊是原始值的按位不是。:(

在十六進制中,這意味着每個4位被映射:X =>的F - X

原因,這是完成的,留給讀者作爲鍛鍊; Tibial向讀者