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

用戶端呼叫 SQL Server DTS 套件實戰:批次檔傳參數、記錄日誌與錯誤處理

     編輯:關於SqlServer

應用情境

需在用戶端機器 (無 Enterprise Manager) 觸發伺服器端 DTS 套件執行,並傳遞參數、記錄執行日誌、捕捉錯誤碼。

環境需求

  • 伺服器:SQL Server 2000 + SP3
  • 用戶端:安裝 SQL Server 2000 Client Tools + SP3 (含 dtsrun.exe)
  • 網路連通,具備 SQL Server 登入權限

實作步驟

1. 伺服器端建立 DTS 套件

使用 DTS 設計師或精靈建立套件 (範例:DTS_ExcelToSqlserver,將 Excel 匯入 SQL Server)。完成後存儲於伺服器 (或版本控制庫)。

2. 用戶端建立批次檔 CRUNDTS.BAT

@echo off
REM 參數檢查: %1=伺服器 %2=登入 %3=密碼 %4=套件名稱
if [%1]==[] goto Usage
if [%2]==[] goto Usage
if [%3]==[] goto Usage
if [%4]==[] goto Usage

cls
SET LOGFILE=C:\DTSRUN.LOG

echo %TIME% Manual DTS package start run......... >> %LOGFILE%
echo ------------------------------------------ >> %LOGFILE%

@dtsrun /S %1 /U %2 /P %3 /N %4 >> %LOGFILE%
if errorlevel 1 goto Error

echo %TIME% Manual DTS package end......... >> %LOGFILE%
echo ------------------------------------------ >> %LOGFILE%
pause
goto Finish

:Error
echo ------------------------------------------- >> %LOGFILE%
echo DTSRUN ERROR PLS CHECK LOG ......... 
echo %TIME% GlobalStore Backup abnormal end. >> %LOGFILE%
pause
goto Finish

:Usage
echo.
echo Usage: CRUNDTS ServerName UserName PassWord DTS_PackageName

:Finish

3. 執行範例

CRUNDTS SRV01 sa P@ssw0rd DTS_ExcelToSqlserver

日誌輸出範例

10:24:29.38 Manual DTS package start run......... 
------------------------------------------
DTSRun: Loading... 

Error: -2147217900 (80040E14); Provider Error: 14262 (37B6)
Error string: 
Error source: 
Help file: 
Help context: 0

10:24:29.66 Manual DTS package end......... 
------------------------------------------
--- 修正參數後再次執行 ---
10:27:29.41 Manual DTS package start run......... 
------------------------------------------
DTSRun: Loading... 
DTSRun: Executing... 
DTSRun OnStart: DTSStep_DTSDataPumpTask_1
DTSRun OnProgress: DTSStep_DTSDataPumpTask_1; 23 Rows have been transformed or copied.; PercentComplete = 0; ProgressCount = 23
DTSRun OnFinish: DTSStep_DTSDataPumpTask_1
DTSRun: Package execution complete.
10:27:30.02 Manual DTS package end......... 
------------------------------------------

進階擴充建議

  • 參數化套件: DTS 套件內使用全域變數,呼叫時透過 /A 參數傳值 (需 DTS 2000 格式)。
  • 非同步觸發: 結合 sp_start_job 呼叫 Agent 作業執行 DTS,避免用戶端長時間等待。
  • 集中日誌: 將日誌寫入資料表而非文字檔,方便查詢與報表。
  • 安全性: 避免批次檔明文儲存密碼,改用 Windows 驗證 (/E 參數) 或加密設定檔。

結語

利用 dtsrun.exe 搭配批次檔,即可輕鬆實現用戶端觸發伺服器端 DTS 套件、傳參數、記日誌、捕錯誤的完整自動化流程,適合輕量級 ETL 排程與手動觸發需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved