與 SQL Server 相關的 SSIS 是什麼?
我發現諸如“SSIS”、“SSDT”等首字母縮寫詞對於它們與 SQL Server 的關係有些混亂。在我看來,SQL Server 實現了 T-SQL 語言,並且像“SSIS”這樣的包是 T-SQL 語言的第 3 方“包裝器”,並且實際上是 SQL Server 的外掛。它是否正確?
這篇博文(此處)提到了 SSIS 與 T-SQL 的優勢(這就是為什麼我認為 SSIS 是 T-SQL 的包裝器)。此外,我可以看到作為 SSIS 包創建的作業可以在 SSMS 的 SQL Server 代理下找到。
SSIS(SQL Server 資訊服務)是 Microsoft SQL Server 的第一方 (Microsoft) 組件/平台。它不是附加產品,在安裝 SQL Server 時,您可以選擇包含組件。
不要將其視為T-SQL的包裝器,將其視為**執行 T-SQL(並執行各種其他非常有用的事情)的地方。
(如果您熟悉的話,SSIS 是 SQL 2000 和之前版本中 DTS(數據轉換服務)的繼承者/替代者。)
要使用 SSIS,您需要創建一個“包”,它是一個帶有 dtsx 副檔名的獨立文件。您在 SSDT (SQL Server Data Tools) 中創建包,這是 MS Visual Studio 的自定義版本(以前稱為 BIDS)。
您的 SSIS 包可以在任何 SQL 伺服器上執行,方法是直接從 SQL 代理作業呼叫它。您還可以在安裝了 SSIS 伺服器組件的單獨伺服器上執行它,或者使用 SSDT 或“SSIS 包執行實用程序”從開發工作站執行它。
下面是一個典型使用的例子:
SQL 代理允許您創建計劃作業,您可以在其中執行一些 T-SQL 程式碼來執行一些數據庫維護或其他操作。將 T-SQL 程式碼粘貼到步驟詳細資訊視窗中,設置作業計劃,一切順利。
但是,如果您需要做一些比您通常在 T-SQL 中嘗試的更複雜的事情怎麼辦?還是 T-SQL 根本無法做到的事情?
SSIS 允許你執行 T-SQL,但你也可以做很多其他的事情:
- 輕鬆管理與多個 SQL 伺服器(或其他 ODBC 源)的連接,用於導入/導出或其他操作
- 創建高性能數據流和轉換(最快的批量導入、列查找、強大的錯誤處理,包括將失敗的行通過管道傳輸到不同的數據集或目標表)
- 支持分支流,它可以啟動真正的並行任務,這通常是使用 T-SQL 無法實現的
- 支持其他腳本/程式碼語言以實現更複雜的邏輯
- 循環對象的簡單機制
- 詳細的錯誤記錄和/或包進度記錄
- 很多其他很酷的東西。
因此,您創建了更複雜的“夜間數據處理”SSIS 包,該包從其他 2 個 SQL 伺服器、1 個 Oracle 實例和 5 個文本文件導入和驗證數據,然後根據您的業務規則處理數據,所有這些都使用並行處理來利用您的多個 CPU 核心。然後從您的工作步驟而不是您的 T-SQL 程式碼中呼叫它。
注意:安裝 SSIS 的伺服器組件並不是絕對必要的,它是一種用於儲存和管理 SSIS 包的工具,或者(如果需要)在專用主機上執行 SSIS 包。
編輯:SSDT 是用於創建和編輯 SSIS 包的工具(感謝@JonathanFite!)。它基本上是 MS Visual Studio 的定製版本。它曾經被稱為 BIDS(商業智能設計工作室)。