首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 整合服務 (SSIS) 常見設計疑難雜症:從「為什麼」到最佳實踐

     編輯:關於SqlServer

前言

本文針對 SSIS (SQL Server 2005 整合服務) 設計階段常見的「為什麼」問題,提供架構層面的解答與替代方案,而非單純的「如何操作」步驟。

問題 1:為何匯入/匯出精靈在傳輸數千張表時失敗?

原因:精靈架構會為每張表在單一資料流任務建立來源/目的地元件。SSIS 資料流引擎對單一資料流的元件數量有擴展性限制(記憶體、執行緒、緩衝區管理)。

建議方案:

  • 拆分為多個套件,每個套件處理百張表以內。
  • 使用 BI 開發工作室 設計參數化套件,透過 Foreach Loop Container 迴圈動態載入表清單。
  • 或改用 BCP / BULK INSERT / 復寫 / AlwaysOn 可讀次要複本 進行大量資料遷移。

問題 2:為何匯入/匯出精靈無法複製資料庫物件 (Table Schema、Index、FK、SP 等)?

定位差異:精靈定位為「資料移動工具」(支援文字檔、Excel、OLE DB 來源),而非「資料庫部署/遷移工具」。複製結構屬管理作業。

正確工具:

  • 複製資料庫精靈 (SSMS 管理節點) — 專門複製結構與資料,支援脫機/線上模式。
  • 資料庫發布精靈 / Generate Scripts — 產生結構腳本。
  • SSDT / DACPAC — 專案式部署,版本控管、差異比對。

問題 3:為何不能在 SSMS 中設計套件?

職責分離:

  • SSMS (SQL Server Management Studio):管理已部署套件的儲存、執行、監控、列舉遠端伺服器套件、與 SSIS 服務整合。
  • BI Development Studio (BIDS / SSDT):專屬設計環境 — 方案/專案組織、偵錯、原始碼版控 (TFS/Git)、多使用者協作。

SQL Server 2005 強制「設計與管理分離」,確保專業分工與治理。

問題 4:資料來源、資料來源檢視 與連線管理員 的關係?

物件層級用途執行階段可用性
資料來源專案定義 OLE DB/ADO.NET 連線字串、友好名稱、描述僅設計階段
資料來源檢視 (DSV)專案關聯結構描述的子集:命名查詢、計算欄、虛擬關聯、友好名稱僅設計階段
連線管理員套件執行階段實際連線:資料庫、檔案、HTTP、FTP 等;含完整中繼資料設計 + 執行階段

關鍵機制:設計時連線管理員可參考資料來源/DSV 繼承屬性;部署時連線管理員內嵌所有中繼資料,獨立運行。多個套件可共享專案層級資料來源/DSV,確保結構定義一致性 (如星狀結構)。

問題 5:為何沒有 Excel / Access 資料來源?

資料來源僅支援 OLE DB/ADO.NET Managed Provider。Excel/Access 透過 連線管理員 直接連接 (選擇 Excel/Access 提供者),不需要專案層級資料來源抽象層。這也是連線管理員比資料來源更通用的原因。

最佳實踐總結

  1. 大量資料移動:避開精靈,使用參數化套件 + 迴圈容器,或 BCP/復寫/資料庫鏡像。
  2. 結構遷移:用複製資料庫精靈或 SSDT/DACPAC 專案部署。
  3. 環境隔離:開發/測試/生產使用專案參數/環境變數切換連線管理員屬性,勿硬編碼。
  4. 共用邏輯:星狀結構等共用結構定義於 DSV,多套件參考。
  5. 版控與 CI/CD:.dtproj 納入 Git,Azure DevOps/GitHub Actions 自動建置部署 .ispac。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved