搜尋本站文章

2011-05-11

匯入與執行 DTS 封裝檔案,以 SQL Server 2008 R2 x64 版本為例

使用環境:

1. Windows Server 2008 R2 Enterprise Edition x64 位元
2. SQL Server 2008 R2 Enterprise Edition x64 位元
3. Office 2010 x64 位元



工作1:使用 SSMS 管理工具,匯入 DTS 封裝檔案

步驟01. 執行 SSMS 管理工具,設定連線到目標伺服器。
步驟02. 展開「管理」\「舊版」\「Data Transformation Services」節點。
--P01


步驟03. 在「Data Transformation Services」節點,滑鼠右鍵,選擇「匯入封裝檔案」。

遭遇以下的錯誤訊息:
--P02


--P03


顯示的錯誤訊息:
===================================

在 SQL Server Management Studio 中管理 DTS 封裝必須有 SQL Server 2000 Data Transformation Services (DTS) 執行階段。如果要安裝 DTS 執行階段,請從 SQL Server 2008 R2 安裝媒體找出並執行適用於 SQL Server 2005 回溯相容性的 Windows Installer 套件 (SQLServer2005_BC*.msi)。您也可以從 Microsoft 下載中心的 SQL Server 功能套件網頁下載 DTS 執行階段。 (Microsoft.SqlServer.DtsObjectExplorerUI)

------------------------------
程式位置:

   於 Microsoft.SqlServer.Dts.ObjectExplorerUI.PackageUtils.LoadPkgInfoFromStorageFile(String sUNCPath)
   於 Microsoft.SqlServer.Dts.ObjectExplorerUI.LegacyActionBase.ShowPkgBrowser(String& sPackageName, String& sPackageID, String& sPackageVersionID, StorageLocation location, String sPackagePathName)

===================================

Managing DTS packages in SQL Server Management Studio requires the SQL Server 2000 Data Transformation Services (DTS) runtime. To install the DTS runtime, on your SQL Server 2008 R2 installation media, locate and run the Windows Installer package for SQL Server 2005 Backward Compatibility (SQLServer2005_BC*.msi). You can also download the DTS runtime from the SQL Server Feature Pack page on the Microsoft Download Center. (Microsoft.SqlServer.DtsObjectExplorerUI)

------------------------------
Program Location:

   at Microsoft.SqlServer.Dts.ObjectExplorerUI.PackageUtils.LoadPkgInfoFromStorageFile(String sUNCPath)
   at Microsoft.SqlServer.Dts.ObjectExplorerUI.LegacyActionBase.ShowPkgBrowser(String& sPackageName, String& sPackageID, String& sPackageVersionID, StorageLocation location, String sPackagePathName)


這是因為:
沒有安裝「SQL Server 2005 回溯相容性元件」,才導致無法執行、匯入 DTS 2000 封裝檔案。


下載與安裝軟體:

Microsoft SQL Server 2008 Service Pack 2 Feature Pack
發佈日期:2010/9/29
版本:10.00.4000.00
請下載 Microsoft SQL Server 2008 SP2 Feature Pack,這是一項獨立安裝封裝集合,這些封裝可以增加 SQL Server 2008 SP2 的額外價值。
http://www.microsoft.com/downloads/details.aspx?FamilyID=1b2bd555-cb5b-47b9-88c7-3f89f3b43779&displayLang=zh-tw


Microsoft SQL Server 2005 回溯相容性元件

SQL Server 回溯相容性封裝包括最新版的 Data Transformation Services 2000 執行階段 (DTS)、SQL Distributed Management Objects (SQL-DMO)、決策支援物件 (DSO) 及 SQL 虛擬裝置介面 (SQLVDI)。

這些版本已更新為可與 SQL Server 2005 及 SQL Server 2008 相容,且包括所有利用 SQL Server 2000 Service Pack 4 (SP4) 和 SQL Server 2005 SP2 來傳送的修正程式。

(1) X86 封裝 (SQLServer2005_BC.msi) http://go.microsoft.com/fwlink/?LinkId=202308&clcid=0x404

(2) X64 封裝 (SQLServer2005_BC_x64.msi) http://go.microsoft.com/fwlink/?LinkId=202310&clcid=0x404

(3) IA64 封裝 (SQLServer2005_BC_ia64.msi) http://go.microsoft.com/fwlink/?LinkId=202311&clcid=0x404

安裝畫面如下:
--P01


--P02


--P03


--P04


--P05


--P06


--P07




在完成安裝「SQL Server 2005 回溯相容性元件」後。
請再度使用 SSMS 管理工具來 匯入 DTS 封裝檔案。

--P01


--P02


--P03


--P04


--P05


在 SSMS 管理工具\「管理」\「舊版」\「Data Transformation Services」節點,具備以下的功能:
(1)「開啟封裝檔案」。
(2)「匯入封裝檔案」。
(3)「移轉精靈」。


僅是安裝了「SQL Server 2005 回溯相容性元件」,是無法使用「開啟封裝檔案」的功能。

--P06


顯示的錯誤訊息:
------------------------------

需要有 SQL Server 2000 DTS 設計師元件,才能編輯 DTS 封裝。請安裝特殊的 Web 下載項目: "SQL Server 2000 DTS 設計師元件",以使用此功能。 (Microsoft.SqlServer.DtsObjectExplorerUI)

------------------------------
程式位置:

   於 Microsoft.SqlServer.Dts.ObjectExplorerUI.LegacyActionBase.CreateLegacyDesigner()
   於 Microsoft.SqlServer.Dts.ObjectExplorerUI.OpenLegacyPackageFromFileAction.Act(INodeInformation nodeInfo)
   於 Microsoft.SqlServer.Dts.ObjectExplorerUI.DtsServerMenuItem.Invoke(INodeInformation parent, String mode, String assembly, String type)


執行封裝

若安裝「SQL Server 2005 回溯相容性元件」,就可以使用「執行 DTS 2000 封裝工作(Execute DTS 2000 Package Task)」來執行封裝:

--P01


--P02


--P03




若是沒有安裝「SQL Server 2005 回溯相容性元件」,是無法使用「執行 DTS 2000 封裝工作」來執行封裝:

--P04


--P05


顯示的錯誤訊息:
===================================

無法顯示此工作的編輯器。 (Microsoft Visual Studio)

===================================

執行 DTS 2000 封裝工作必須有 SQL Server 2000 Data Transformation Services (DTS) 執行階段。如果要安裝 DTS 執行階段,請從 SQL Server 2008 R2 安裝媒體找出並執行適用於 SQL Server 2005 回溯相容性的 Windows Installer 套件 (SQLServer2005_BC*.msi)。您也可以從 Microsoft 下載中心的 SQL Server 功能套件網頁下載 DTS 執行階段。 (Microsoft.SqlServer.Exec80PackageTaskUI)

------------------------------
程式位置:

   於 Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.InnerView.OnInitialize(IDTSTaskUIHost treeHost, TreeNode viewNode, Object taskHost, Object connections)
   於 Microsoft.DataTransformationServices.Controls.TreePanelHost.OnInitialize(TreeNode node)
   於 Microsoft.DataTransformationServices.Controls.TreePanelHost.Microsoft.DataTransformationServices.Controls.IDTSTaskUIHost.AddView(String viewName, IDTSTaskUIView view, TreeNode parentNode)
   於 Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.Exec80PackageTaskMainWnd..ctor(TaskHost taskHost)
   於 Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.Exec80PackageTaskUI.GetView()
   於 Microsoft.DataTransformationServices.Design.DtrTaskDesigner.GetTaskEditor()

===================================

Cannot show the editor for this task. (Microsoft Visual Studio)

===================================

The Execute DTS 2000 Package task requires the SQL Server 2000 Data Transformation Services (DTS) runtime. To install the DTS runtime, on your SQL Server 2008 R2 installation media, locate and run the Windows Installer package for SQL Server 2005 Backward Compatibility (SQLServer2005_BC*.msi). You can also download the DTS runtime from the SQL Server Feature Pack page on the Microsoft Download Center. (Microsoft.SqlServer.Exec80PackageTaskUI)

------------------------------
Program Location:

   at Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.InnerView.OnInitialize(IDTSTaskUIHost treeHost, TreeNode viewNode, Object taskHost, Object connections)
   at Microsoft.DataTransformationServices.Controls.TreePanelHost.OnInitialize(TreeNode node)
   at Microsoft.DataTransformationServices.Controls.TreePanelHost.Microsoft.DataTransformationServices.Controls.IDTSTaskUIHost.AddView(String viewName, IDTSTaskUIView view, TreeNode parentNode)
   at Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.Exec80PackageTaskMainWnd..ctor(TaskHost taskHost)
   at Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.Exec80PackageTaskUI.GetView()
   at Microsoft.DataTransformationServices.Design.DtrTaskDesigner.GetTaskEditor()


若是存放多個 DTS 2000 封裝在同一個檔案 *.dts 內

看來是無法使用 SSMS 管理工具,也無法利用「執行 DTS 2000 封裝工作」來開啟與執行這類的封裝檔案。

顯示的錯誤訊息:
無法比較陣列中的兩個元素。 (mscorlib)

------------------------------
程式位置:

   於 System.Array.SorterObjectArray.SwapIfGreaterWithItems(Int32 a, Int32 b)
   於 System.Array.SorterObjectArray.QuickSort(Int32 left, Int32 right)
   於 System.Array.Sort(Array keys, Array items, Int32 index, Int32 length, IComparer comparer)
   於 System.Collections.ArrayList.Sort(Int32 index, Int32 count, IComparer comparer)
   於 System.Collections.ArrayList.Sort()
   於 Microsoft.SqlServer.Dts.ObjectExplorerUI.Pkg80Browser.LoadPkg80Browser(SavedPackageInfos savedPkgInfos, String fileName)
   於 Microsoft.SqlServer.Dts.ObjectExplorerUI.LegacyActionBase.ShowPkgBrowser(String& sPackageName, String& sPackageID, String& sPackageVersionID, StorageLocation location, String sPackagePathName)

===================================

至少一個物件必須實作 IComparable。 (mscorlib)

------------------------------
程式位置:

   於 System.Collections.Comparer.Compare(Object a, Object b)
   於 System.Array.SorterObjectArray.SwapIfGreaterWithItems(Int32 a, Int32 b)


-- 在 BIDS 上的「執行 DTS 2000 封裝工作」,所顯示的錯誤訊息

===================================

無法比較陣列中的兩個元素。 (mscorlib)

------------------------------
程式位置:

   於 System.Array.SorterObjectArray.SwapIfGreaterWithItems(Int32 a, Int32 b)
   於 System.Array.SorterObjectArray.QuickSort(Int32 left, Int32 right)
   於 System.Array.Sort(Array keys, Array items, Int32 index, Int32 length, IComparer comparer)
   於 System.Collections.ArrayList.Sort(Int32 index, Int32 count, IComparer comparer)
   於 System.Collections.ArrayList.Sort(IComparer comparer)
   於 Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.Pkg80Browser..ctor(SavedPackageInfos savedPkgInfos, String fileName)
   於 Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.ModelEditer.ShowPkgBrowser(GeneralNode genNode, Object value, IWindowsFormsEditorService editorService)

===================================

無法將型別 'Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.SavedPkgTreeNode' 的物件轉換為型別 'Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.PkgTreeNode'。 (Microsoft.SqlServer.Exec80PackageTaskUI)

------------------------------
程式位置:

   於 Microsoft.SqlServer.Dts.Tasks.Exec80PackageTask.Pkg80Browser.PackageTreeNodeComparer.Compare(Object x, Object y)
   於 System.Array.SorterObjectArray.SwapIfGreaterWithItems(Int32 a, Int32 b)

--P01
使用 SQL Server 2000 Enterprise Manager 可以正確開啟:



--P02
使用 SSMS 管理工具無法匯入:



--P03
使用「執行 DTS 2000 封裝工作」,無法開啟:






參考資料:
Support for SQL Server 2000 DTS in SQL Server 2008 R2
http://msdn.microsoft.com/en-us/library/bb500440.aspx

SQL Server 2008 R2 中 Data Transformation Services (DTS) 的支援
http://msdn.microsoft.com/zh-tw/library/bb500440.aspx

Microsoft SQL Server 2008 Service Pack 2 Feature Pack
http://www.microsoft.com/downloads/details.aspx?FamilyID=1b2bd555-cb5b-47b9-88c7-3f89f3b43779&displayLang=zh-tw


設定 SSMS 2008 管理工具,可以使用 DTS 設計師
http://sharedderrick.blogspot.com/2009/10/ssms-2008-dts.html