Oracle 和 SQL Server 2016 之間的 SSIS 慢速數據傳輸
我正在嘗試設計一個使用 SSIS 將數據從 Oracle 傳輸到 SQL Server 2016 的流程。這樣做的目的是從 SQL Server 2000 實例中刪除生產流程,在該實例中,傳輸是通過連結伺服器實現的。
我確實完成了邏輯並使用了“Native OLE DB\Microsoft OLE DB Provider for Oracle”以及“Native OLE DB\Microsoft OLE DB Provider for Oracle”OLEDB 連接。
當我執行該程序包時,僅 9,934 行的傳輸大約需要一分鐘。對於包含 28,228472 條記錄的表來說,這太長了。
我嘗試將“Oracle Source”組件與 Oracle Connection Manager 一起使用。雖然我可以測試連接、設計流程甚至預覽結果集,但在我的 Visual Studio 中執行它時,它會立即指出錯誤:“無法將組件元數據升級到更新版本的組件。PerformUpgrade 方法失敗。”
Visual Studio 是:Visual Studio 2019 16.2.0
Visual Studio項目兼容模式為:SQL Server 2016
目標 SQL Server 是:SQL Server 2016 (13.0.5233.0)
該包應該在 SQL Server 上執行:SQL Server 2016 (13.0.5264.1)
Oracle 伺服器版本為:Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production PL/SQL Release 12.1.0.2.0 - Production CORE 12.1.0.2.0 Production TNS for Linux:版本 12.1.0.2.0 - Production NLSRTL 版本 12.1.0.2.0 - 生產
感謝您的幫助。
我設法解決了性能問題,並確保傳輸了總量數據。
我放棄了使用 OLEDB 連接,轉而使用“ADO NET”。我使用“.Net Providers\OracleClient Data Provider”作為源,使用“.Net Providers\SqlClient Data Provider”作為目標。
ADO NET 源和連接提供了一致的數據傳輸性能並確實獲得了所有記錄。SQL Server 之間的傳輸仍然可以通過 OLEDB 連接更好地工作。ADO 源和 OLEDB 目標之間的傳輸需要非 unicode 到 unicode 的轉換。