Sql-Server

用於多個 RDBMS 的通用 SQL 作業調度程序?

  • January 26, 2014

我一直在尋找這個問題的答案,但似乎找不到任何東西。所以我的問題是——我們有一個帶有 MS SQL Server 2008、MySQL 和 RedShift 的環境,並且在數據庫之間有一些複雜的數據流。目前,調度是通過獨立的系統完成的,但我希望有一個調度器可以從頭到尾控制數據流,並且能夠編寫從 MS SQL 到 RedShift 等流的腳本。有沒有可以完成的系統這已經?我不是DBA,所以我猜以前有人遇到過這個問題……

提前致謝!

編輯:所以我們的一個數據流可能看起來像這樣 - 發佈在 SFTP 上的文件 –> 執行正常的 ETL 常式 –> 編譯最終完整文件 –> 發送給客戶/推送到 S3 –> 在 Redshift 上執行 SQL 命令以載入* –> RedShift 上的夜間批處理* –> 解除安裝到 S3* –> 載入到 MySQL*

*這些是使用僅通過 jdbc 連接的工具手動執行的(不記得程序)

我的 DB 相關經驗很淺,所以我正準備寫一些 python 腳本並將它們安排在 CRON 中,但這是自定義的並且難以擴展 - 肯定有人以前遇到過這個問題。我們希望能夠在一個地方查看作業的狀態,在所有三個系統之間創建新的數據流/ETL(如 SSIS 作業)。

您正在尋找的是企業作業計劃程序。Computer Associates 有一個很好的稱為 AutoSys。還有 JAMS、OpCon、Tivoli 等。維基百科上有一個不錯的列表。我只使用過 AutoSys,它很昂貴,但功能非常強大,但需要一些工作才能進行設置。我不知道其他選項的成本或複雜性。

這些調度程序允許您調度命令以在調度程序支持的幾乎任何作業系統或應用程序上執行,而無需使用本機調度程序(因此您不需要 SQL 代理或任何東西)。

SQL Server 代理作業是執行此操作的好方法。調度、日誌記錄和錯誤行為是有效的,當出現問題時,我通常可以相當快地找出發生了什麼。您可以在一個作業中組合多個步驟,並使後面的步驟依賴於前面步驟的完成。

您可以在 SQL Server 中執行儲存過程或 SSIS 包,或執行批處理文件和命令行來控制 MySQL 和 RedShift。如果您不想在 SQL Server 中這樣做,您可以退回到使用 Windows 計劃任務,但日誌記錄和錯誤處理較差。

編輯:

SSIS 包應該能夠連接到 MySQL 並在那裡執行 SQL 命令。我不知道 RedShift,但如果它會談論 ODBC,你也應該能夠做到這一點。SSIS 有一個用於 FTP 的內置小元件,但顯然不是 SFTP - 你能在命令行下做到這一點嗎?

聽起來您應該能夠在 SSIS 中完成大部分工作。有一點學習曲線(閱讀:頭痛),它對數據類型非常特別,但是一旦你開始它,它的執行速度比大多數自定義編碼要快得多。

引用自:https://dba.stackexchange.com/questions/40776