共用方式為


dtexec 公用程式

dtexec 命令提示字元公用程式是用來設定和執行 SQL Server Integration Services 封裝。 dtexec 公用程式可存取所有封裝組態及執行功能,例如參數、連接、屬性、變數、記錄與進度指標。 Dtexec公用程式可讓您從這些來源載入封裝:Integration Services 伺服器、.ispac 專案檔案、Microsoft SQL Server資料庫、SSIS 封裝存放區及檔案系統。 

[!附註]

當您使用 SQL Server 2012 Integration Services (SSIS) 隨附的 dtexec 公用程式版本執行 SQL Server 2005 Integration Services (SSIS) 或 SQL Server 2008 Integration Services (SSIS) 封裝時,Integration Services 會暫時將封裝升級為 SQL Server 2012 Integration Services (SSIS)。 但是,您無法使用 dtexec 公用程式來儲存這些升級的變更。 如需如何永久地將封裝升級到 SQL Server 2012 Integration Services (SSIS) 的詳細資訊,請參閱<升級 Integration Services 封裝>。

本主題包含下列章節:

  • Integration Services Server and Project File

  • Installation Considerations on 64-bit Computers

  • Considerations for Side-by-Side Installations

  • Phases of Execution

  • Exit Codes Returned

  • Syntax Rules

  • Using dtexec from the xp_cmdshell

  • Syntax

  • Parameters

  • Remarks

  • Examples

Integration Services 伺服器及專案檔案

當您使用 dtexec 執行 Integration Services 伺服器上的封裝時,dtexec 會呼叫 catalog.create_execution (SSISDB 資料庫)catalog.set_execution_parameter_value (SSISDB 資料庫)catalog.start_execution (SSISDB 資料庫) 預存程序以建立執行、設定參數值,以及開始執行。 所有執行記錄都可以從伺服器的相關檢視中查看,或透過 SQL Server Management Studio 中提供的標準報表查看。 如需這些報表的詳細資訊,請參閱<Integration Services 伺服器的報表>。

以下是執行 Integration Services 伺服器上的封裝範例。

DTExec /ISSERVER "\SSISDB\folderB\Integration Services Project17\Package.dtsx" /SERVER "." /Envreference 2 /Par "$Project::ProjectParameter(Int32)";1 /Par "Parameter(Int32)";21 /Par "CM.sqlcldb2.SSIS_repro.InitialCatalog";ssisdb /Par "$ServerOption::SYNCHRONIZED(Boolean)";True

當您使用 dtexec 從.ispac 專案檔案執行封裝,相關的選項包括:/Proj[ect] 及 /Pack[age] 會用於指定專案路徑及封裝資料流名稱。 當您從 SQL Server Management Studio 執行 [Integration Services 專案轉換精靈],以便將專案轉換至專案部署模型時,此精靈會產生一個 .ispac 專案檔案。 如需詳細資訊,請參閱<將專案部署至 Integration Services 伺服器>。

您可以搭配協力廠商排程工具使用 dtexec,排程部署到 Integration Services 伺服器的封裝。

64 位元電腦上的安裝考量

Integration Services 會在 64 位元電腦上安裝 dtexec 公用程式 (dtexec.exe) 的 64 位元版本。 如果您必須在 32 位元模式下執行特定封裝,需要安裝 32 位元版本的 dtexec 公用程式。 若要安裝 32 位元版本的 dtexec 公用程式,您必須在安裝期間選取用戶端工具或 SQL Server 資料工具 (SSDT)。

根據預設,同時安裝了 64 位元和 32 位元版之 Integration Services 命令提示字元公用程式的 64 位元電腦將會在命令提示字元上執行 32 位元版本。 執行 32 位元版本是因為 32 位元版本的目錄路徑在 PATH 環境變數中會出現在 64 位元版本的目錄路徑前面 (一般來說,32 位元的目錄路徑是 <磁碟機>:\Program Files(x86)\Microsoft SQL Server\110\DTS\Binn,而 64 位元的目錄路徑是 <磁碟機>:\Program Files\Microsoft SQL Server\110\DTS\Binn)。

[!附註]

如果您使用 SQL Server Agent 執行此公用程式,SQL Server Agent 會自動使用 64 位元版的公用程式。 SQL Server Agent 會使用此登錄 (而不是 PATH 環境變數) 來尋找此公用程式的正確可執行檔。

若要確保您可在命令提示字元上執行 64 位元版的公用程式,您可以採取下列其中一個動作:

  • 開啟 [命令提示字元] 視窗,然後將目錄切換到包含 64 位元版之公用程式的目錄 (<磁碟機>:\Program Files\Microsoft SQL Server\110\DTS\Binn),然後從該位置執行此公用程式。

  • 在命令提示字元上執行此公用程式,其方式是輸入 64 位元版之公用程式的完整路徑 (<磁碟機>:\Program Files\Microsoft SQL Server\110\DTS\Binn)。

  • 永久變更 PATH 環境變數中的路徑順序,其方式是在變數中將 64 位元路徑 (<磁碟機>:\Program Files\Microsoft SQL Server\110\DTS\Binn) 放在 32 位元路徑 (<磁碟機>:\ Program Files(x86)\Microsoft SQL Server\110\DTS\Binn) 的前面。

擁有並存安裝之電腦的考量

如果 SQL Server 2012 Integration Services (SSIS) 安裝在已安裝 SQL Server 2005 Integration Services (SSIS) 或 SQL Server 2008 Integration Services (SSIS) 的電腦上,則會安裝多個版本的 dtexec 公用程式。

為確保您執行正確的公用程式版本,請在命令提示字元中輸入完整路徑 (<磁碟機>:\Program Files\Microsoft SQL Server\<版本>\DTS\Binn) 來執行公用程式。

執行階段

這個公用程式有四個執行階段。 執行階段如下所示:

  1. 命令來源階段:命令提示字元讀取已經指定的選項及引數清單。 如果發現 /?/HELP 選項,則會略過所有後續的階段。

  2. 封裝載入階段:載入 /SQL/FILE/DTS 選項所指定的封裝。

  3. 設定階段:選項會依下列順序處理:

    • 設定封裝旗標、變數和屬性的選項。

    • 確認封裝的版本和建置的選項。

    • 設定公用程式之執行階段行為的選項,例如報告。

  4. 驗證及執行階段:執行封裝,如有指定 /VALIDATE 選項,將只會驗證封裝而不會執行封裝。

傳回的結束碼

從 dtexec 公用程式傳回的結束碼

當執行封裝時,dtexec 可以傳回結束碼。 結束碼可用來擴展 ERRORLEVEL 變數,讓您可以在批次檔內的條件陳述式或分支邏輯中測試此變數的值。 下列資料表列出封裝作業結束時,dtexec 公用程式所能設定的值。

描述

0

順利執行封裝。

1

封裝失敗。

3

使用者取消封裝。

4

公用程式找不到所要求的封裝。 找不到這個封裝。

5

公用程式無法載入所要求的封裝。 無法載入這個封裝。

6

公用程式在命令列中發現內部語法錯誤或語意錯誤。

語法與規則

公用程式語法規則

所有選項的開頭都必須是斜線 (/) 或減號 (-)。 此處顯示的選項的開頭為斜線 (/),但可以用減號 (-) 來替代。

如果引數中包含空格,則引數必須包含在引號內。 如果引數沒有用引號括住,則引數不能包含空格。

加上引號的字串內的雙引號代表逸出的單引號。

除了密碼以外,選項和引數都沒有區分大小寫。

使用 xp_cmdshell 的 dtexec

使用 xp_cmdshell 的 dtexec

您可以從 xp_cmdshell 提示中執行 dtexec。 下列範例顯示如何執行名為 UpsertData.dtsx 的封裝,並忽略傳回碼:

EXEC xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'

下列範例顯示如何執行同一個封裝,並擷取傳回碼:

DECLARE @returncode int
EXEC @returncode = xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'
重要事項重要事項

在 Microsoft SQL Server 中,xp_cmdshell 選項在新安裝中預設為停用。 您可以執行 sp_configure 系統預存程序來啟用此選項。 如需詳細資訊,請參閱<xp_cmdshell 伺服器組態選項>。

語法

dtexec /option [value] [/option [value]]...

參數

選項

描述

/?[option_name]

(選擇性)。 顯示命令提示字元選項,或顯示指定的 option_name 的說明,然後關閉公用程式。

如有指定 option_name 引數,dtexec 會啟動《SQL Server 線上叢書》,並顯示 dtexec 公用程式主題。

/Ca[llerInfo]

(選擇性)。 指定封裝執行的其他資訊。 當您使用 SQL Server Agent 執行封裝時,代理程式會設定此引數以指示透過 SQL Server Agent 叫用封裝執行。 從命令列執行 dtexec 公用程式時,會忽略此參數。

/CheckF[ile] filespec

(選擇性)。 將封裝上的 CheckpointFileName 屬性設為 filespec 所指定的路徑和檔案。 當重新啟動封裝時,會使用這個檔案。 如果指定這個選項時沒有使用檔案名稱值,就會將封裝的 CheckpointFileName 設為空字串。 如果沒有指定這個選項,就會保留封裝中的值。

/CheckP[ointing]{on\off}

(選擇性)。 設定一個值來決定在執行封裝期間,封裝是否要使用檢查點。 on 這個值指定要重新執行失敗的封裝。 當重新執行失敗的封裝時,執行階段引擎會使用檢查點,從失敗點重新啟動封裝。

如果宣告的選項不含任何值,則預設值是 on。 如果此值設為 on,但找不到檢查點檔案,則封裝執行失敗。 如果沒有指定這個選項,就會保留封裝中所設定的值。 如需詳細資訊,請參閱<使用檢查點來重新啟動封裝>。

dtexec 的 /CheckPointing on 選項相當於將封裝的 SaveCheckpoints 屬性設定為 True,以及將 CheckpointUsage 屬性設定為 Always。

/Com[mandFile] filespec

(選擇性)。 指定要與 dtexec 一起執行的命令選項。 filespec 中指定的檔案會開啟,並且讀取檔案中的選項,直到在檔案中找到 EOF 為止。 filespec 是文字檔。 filespec 引數會指定要與封裝的執行產生關聯之命令檔的檔名和路徑。

/Conf[igFile] filespec

(選擇性)。 指定要擷取值的來源組態檔。 使用這個選項時,您可以設定一個執行階段組態,這個執行階段組態與封裝設計階段所指定的組態不同。 您可以將不同的組態設定儲存在 XML 組態檔中,然後在執行封裝之前,利用 /ConfigFile 選項來載入設定。

您可以使用 /ConfigFile 選項在執行階段載入您未在設計階段指定的其他組態。 但是,您不能使用 /ConfigFile 選項來取代您同樣在設計階段指定過的設定值。 如需了解封裝組態套用的方式,請參閱<封裝組態>。

/Conn[ection] id_or_name;connection_string [[;id_or_name;connection_string] ]

(選擇性)。 指定具有指定名稱或 GUID 的連接管理員位於此封裝中,並指定連接字串。

此選項需要指定兩個參數:id_or_name 引數中必須提供連接管理員名稱或 GUID,connection_string 引數中必須指定有效的連接字串。 如需詳細資訊,請參閱<Integration Services (SSIS) 連接>。

在執行階段,您可以使用 /Connection 選項,從另一個與設計階段所指定之位置不同的位置來載入封裝組態。 然後這些組態的值會取代您原本指定的值。 但是,/Connection 選項只能用於使用連接管理員的組態,例如 SQL Server 組態。 如需了解封裝組態套用的方式,請參閱<封裝組態>及<SQL Server 2012 中 Integration Services 功能的行為變更>。

/Cons[oleLog] [[displayoptions];[list_options;src_name_or_guid]...]

(選擇性)。 在執行封裝期間,於主控台中顯示指定的記錄項目。 如果省略了這個選項,主控台便不會顯示任何記錄項目。 如果指定了這個選項,但未設定用來限制顯示的參數,就會顯示每個記錄項目。 若要限制主控台顯示的項目,您可以使用 displayoptions 參數指定要顯示的資料行,以及使用 list_options 參數來限制記錄項目類型。

displayoptions 值如下:

  • N (名稱)

  • C (電腦)

  • O (操作員)

  • S (來源名稱)

  • G (來源 GUID)

  • X (執行 GUID)

  • M (訊息)

  • T (開始和結束時間)

list_options 值如下:

  • I - 指定包含清單。 只記錄指定的來源名稱或 GUID。

  • E - 指定排除清單。 不記錄指定的來源名稱或 GUID。

  • 對包含或排除指定的 src_name_or_guid 參數為事件名稱、來源名稱或來源 GUID。

如果您在相同命令提示字元上使用多個 /ConsoleLog 選項,這些選項的互動方式如下:

  • 顯示順序不受影響。

  • 如果命令列上沒有包含清單,則排除清單會套用至所有類型的記錄項目。

  • 如果命令列上出現任何包含清單,則排除清單會套用至所有包含清單的聯集。

如需 /ConsoleLog 選項的若干範例,請參閱「備註」一節。

/D[ts] package_path

(選擇性)。 從 SSIS 封裝存放區中載入封裝。 儲存在 SSIS 封裝存放區中的封裝是使用舊版封裝部署模型所部署。 若要使用專案部署模型,執行部署到 Integration Services 伺服器的封裝,請使用 /ISServer 選項。 如需封裝和專案部署模型的詳細資訊,請參閱<部署專案和封裝>。

package_path 引數指定 SSIS 封裝的相對路徑,從 SSIS 封裝存放區的根目錄開始,並包括 SSIS 封裝的名稱。 如果 package_path 引數中指定的路徑或檔案名稱包含空格,必須將 package_path 引數括以引號。

/DTS 選項不能和 /File/SQL 選項一起使用。 如果指定了多個選項,dtexec 便會失敗。

/De[crypt] password

(選擇性)。 設定載入含密碼加密的封裝時,所用的解密密碼。

/Dumperror code

(選擇性) 如果執行封裝時發生一個或多個指定的事件,會建立偵錯傾印檔案 .mdmp 和 .tmp。 error code 引數會指定事件代碼的類型 (錯誤、警告或資訊),這些事件代碼將會觸發系統建立偵錯傾印檔案。 若要指定多個事件代碼,請用分號 (;) 隔開每一個 error code 引數。 error code 引數中請勿包含引號。

下列範例會在 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER 錯誤發生時,產生偵錯傾印檔案。

/Dump 0xC020801C

根據預設,Integration Services 會將偵錯傾印檔案儲存在 <磁碟機>:\Program Files\Microsoft SQL Server\110\Shared\ErrorDumps 資料夾中。

[!附註]

偵錯傾印檔案可能會包含敏感性資訊。 您可以使用存取控制清單 (ACL) 來限制這些檔案的存取權,或將這些檔案複製到具有限制性存取權的資料夾。 例如,在您將偵錯檔案傳送給 Microsoft 支援服務之前,我們建議您先移除任何敏感性或機密資訊。

若要將這個選項套用到 dtexec 公用程式執行的所有封裝中,請將 DumpOnCodes REG_SZ 值加入到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\SSIS\Setup\DtsPath 登錄機碼。 DumpOnCodes 中的資料值會指定將會觸發系統建立偵錯傾印檔案的錯誤碼。 多個錯誤碼必須以分號 (;) 隔開。

如果您將 DumpOnCodes 值加入到此登錄機碼,並使用 /Dump 選項,系統將會建立以這兩個設定為根據的偵錯傾印檔案。

如需有關偵錯傾印檔案的詳細資訊,請參閱<產生封裝執行的傾印檔案>。

/DumpOnError

(選擇性) 如果執行封裝時發生任何錯誤,會建立偵錯傾印檔案 .mdmp 和 .tmp。

根據預設,Integration Services 會將偵錯傾印檔案儲存在 <磁碟機>:\Program Files\Microsoft SQL Server\110\Shared\ErrorDumps 資料夾中。

[!附註]

偵錯傾印檔案可能會包含敏感性資訊。 您可以使用存取控制清單 (ACL) 來限制這些檔案的存取權,或將這些檔案複製到具有限制性存取權的資料夾。 例如,在您將偵錯檔案傳送給 Microsoft 支援服務之前,我們建議您先移除任何敏感性或機密資訊。

若要將這個選項套用到 dtexec 公用程式執行的所有封裝中,請將 DumpOnError REG_DWORD 值加入到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\SSIS\Setup\DtsPath 登錄機碼。 DumpOnError REG_DWORD 值會決定 /DumpOnError 選項是否需要搭配 dtexec 公用程式一起使用:

  • 非零的資料值表示系統將會在發生任何錯誤時建立偵錯傾印檔案,不論您是否搭配 dtexec 公用程式使用 /DumpOnError 選項。

  • 零的資料值表示系統將不會建立偵錯傾印檔案,除非您搭配 dtexec 公用程式使用 /DumpOnError 選項。

如需有關偵錯傾印檔案的詳細資訊,請參閱<產生封裝執行的傾印檔案>。

/Env[Reference] environment reference ID

(選擇性)。 針對部署到 Integration Services 伺服器的封裝,指定封裝執行所使用的環境參考 (ID)。 設定為繫結至變數的參數將使用環境中包含之變數的值。

您可以將 /Env[Reference] 選項與 /ISServer 及 /Server 選項並用。

此參數是由 SQL Server Agent 所使用。

/F[ile] filespec

(選擇性)。 載入儲存在檔案系統中的封裝。 儲存在檔案系統中的封裝是使用舊版封裝部署模型所部署。 若要使用專案部署模型,執行部署到 Integration Services 伺服器的封裝,請使用 /ISServer 選項。 如需封裝和專案部署模型的詳細資訊,請參閱<部署專案和封裝>。

filespec 引數指定封裝的路徑和檔案名稱。 您可以指定路徑為通用命名慣例 (UNC) 路徑或本機路徑。 如果 filespec 引數中指定的路徑或檔案名稱包含空格,必須將 filespec 引數括以引號。

/File 選項不能和 /DTS/SQL 選項一起使用。 如果指定了多個選項,dtexec 便會失敗。

/H[elp] [option_name]

(選擇性)。 顯示選項的說明,或顯示指定之 option_name 的說明,並關閉公用程式。

如有指定 option_name 引數,dtexec 會啟動《SQL Server 線上叢書》,並顯示 dtexec 公用程式主題。

/ISServer packagepath

(選擇性)。 執行部署到 Integration Services 伺服器的封裝。 PackagePath 引數會指定部署到 Integration Services 伺服器之封裝的完整路徑和檔案名稱。 如果 PackagePath 引數中指定的路徑或檔案名稱包含空格,必須將 PackagePath 引數括以引號。

封裝格式如下所示:

\<catalog name>\<folder name>\<project name>\package file name

您可以將 /Server 選項與 /ISSERVER 選項並用。 只有 Windows 驗證可以執行 SSIS 伺服器上的封裝。 目前的 Windows 使用者用來存取封裝。 如果省略 /Server 選項,將假設使用 SQL Server 的預設本機執行個體。

/ISSERVER 選項無法與 /DTS, /SQL 或 /File 選項並用。 如果指定了多個選項,dtexec 便會失敗。

此參數是由 SQL Server Agent 所使用。

/L[ogger] classid_orprogid;configstring

(選擇性)。 建立一或多個記錄提供者與 SSIS 封裝執行作業的關聯性。 classid_orprogid 參數指定記錄提供者,並可指定為類別 GUID。 configstring 是用來設定記錄提供者的字串。

下列清單顯示可用的記錄提供者:

  • 文字檔:

    • ProgID:DTS.LogProviderTextFile.1

    • ClassID:{59B2C6A5-663F-4C20-8863-C83F9B72E2EB}

  • SQL Server Profiler:

    • ProgID:DTS.LogProviderSQLProfiler.1

    • ClassID:{5C0B8D21-E9AA-462E-BA34-30FF5F7A42A1}

  • SQL Server:

    • ProgID:DTS.LogProviderSQLServer.1

    • ClassID:{6AA833A1-E4B2-4431-831B-DE695049DC61}

  • Windows 事件記錄:

    • ProgID:DTS.LogProviderEventLog.1

    • ClassID:{97634F75-1DC7-4F1F-8A4C-DAF0E13AAA22}

  • XML 檔案:

    • ProgID:DTS.LogProviderXMLFile.1

    • ClassID:{AFED6884-619C-484F-9A09-F42D56E1A7EA}

/M[axConcurrent] concurrent_executables

(選擇性)。 指定封裝可以同時執行的可執行檔數量。 指定的值必須是非負數的整數或 -1。 -1 值表示 SSIS 允許同時執行的最大可執行檔數量,等於執行封裝之電腦上的處理器總數再加 2。

/Pack[age] PackageName

(選擇性)。 指定所執行的封裝。 當您從 Visual Studio 執行封裝時,主要會使用這個參數。

/P[assword] password

(選擇性)。 允許擷取 SQL Server 驗證所保護的封裝。 這個選項會與 /User 選項搭配使用。 如果省略 /Password 選項,而使用 /User 選項,便會使用空白密碼。 password 值可括以引號。

安全性注意事項安全性注意事項

盡可能使用 Windows 驗證。

/Par[ameter] [$Package::| $Project::| $ServerOption::]parameter_name [(data_type)];literal_value

(選擇性)。 指定參數值。 可以指定多個 /Parameter 選項。 資料類型為當做字串的 CLR TypeCodes。 若是非字串的參數,則會在括號中指定資料類型,後面接著參數名稱。

/Parameter 選項只可與 /ISServer 選項搭配使用。

您可以使用 $Package、$Project 和 $ServerOption 前置詞個別表示封裝參數、專案參數,以及伺服器選項參數。 預設參數類型為封裝。

以下範例會執行封裝,以及為專案參數 (myparam) 提供 myvalue,並為封裝參數 (anotherparam) 提供整數值 12。

Dtexec /isserver “SSISDB\MyFolder\MyProject\MyPackage.dtsx” /server “.” /parameter $Project::myparam;myvalue /parameter anotherparam(int32);12

您也可以使用參數設定連接管理員屬性。 使用 CM 前置詞代表連接管理員參數。

在以下的範例中,SourceServer 連接管理員的 InitialCatalog 屬性設定為 ssisdb。

/parameter CM.SourceServer.InitialCatalog;ssisdb

在下列範例中,SourceServer 連接管理員的 ServerName 屬性設定為句號 (.),表示本機伺服器。

/parameter CM.SourceServer.ServerName;.

/Proj[ect] ProjectFile

(選擇性)。 指定要從中擷取所執行之封裝的專案。 ProjectFile 引數會指定 .ispac 檔案名稱。 當您從 Visual Studio 執行封裝時,主要會使用這個參數。

/Rem comment

(選擇性)。 在命令提示字元或命令檔中加入註解。 引數是選擇性的。 comment 的值是一個字串,它必須以引號括住,或不包含空格。 如果未指定引數,將會插入空白行。 命令取得階段將會捨棄 comment 值。

/Rep[orting] level [;event_guid_or_name[;event_guid_or_name[...]]

(選擇性)。 指定要報告的訊息類型。 level 可用的報告選項如下:

N...無報告。

E...報告錯誤。

W...報告警告。

I...報告參考用訊息。

C...報告自訂事件。

D...報告資料流程工作事件。

P...報告進度。

V...詳細資訊報告。

V 和 N 引數與所有其他引數互斥;這兩個引數必須單獨指定。 如果沒有指定 /Reporting 選項,預設層級便是 E (錯誤)、W (警告) 和 P (進度)。

所有事件前面都加上 "YY/MM/DD HH:MM:SS" 格式的時間戳記,如果有 GUID 或易記名稱,也會加上它們。

選擇性參數 event_guid_or_name 記錄提供者的例外狀況清單, 例外狀況會指出不要記錄但可能已記錄的事件。

您不需要排除通常預設為不要記錄的事件。

/Res[tart] {deny | force | ifPossible}

(選擇性)。 為這個封裝中的 CheckpointUsage 屬性指定新值。 這些參數的意義如下:

Deny:將 CheckpointUsage 屬性設為 DTSCU_NEVER

Force:將 CheckpointUsage 屬性設為 DTSCU_ALWAYS

ifPossible:將 CheckpointUsage 屬性設為 DTSCU_IFEXISTS

如果沒有指定任何值,則會使用預設值 force

/Set [$Sensitive::]propertyPath;value

(選擇性)。 覆寫封裝內的參數、變數、屬性、容器、記錄提供者、Foreach 列舉值或連接的組態。 使用此選項時,/Set 會將 propertyPath 引數變更為指定的值。 可以指定多個 /Set 選項。

除了使用 /Set 選項與 /F[ile] 選項之外,您也可以使用 /Set選項與 /ISServer 選項或 /Project 選項。 當您一起使用 /Set/Project 時,/Set 會設定參數值。 當您一起使用 /Set/ISServer 時, /Set 會設定屬性覆寫。 此外,當您一起使用 /Set/ISServer 時,也可使用選擇性的 $Sensitive 前置詞,指出屬性在 Integration Services 伺服器上應視為要區分大小寫。

您可以執行 [封裝組態精靈] 來決定 propertyPath 的值。 您選取項目的路徑會顯示在最後的 [正在完成精靈] 頁面上,並可複製及貼上。 如果您只是為了這個目的而使用精靈,可以在複製路徑之後取消精靈。

下列範例會執行儲存在檔案系統中的封裝並提供變數的新值:

dtexec /f mypackage.dtsx /set \package.variables[myvariable].Value;myvalue

下列範例會從 .ispac 專案檔案執行封裝,並設定封裝與專案參數。

/Project c:\project.ispac /Package Package1.dtsx /SET \Package.Variables[$Package::Parameter];1 /SET \Package.Variables[$Project::Parameter];1

您可以使用 /Set 選項來變更載入封裝組態的位置。 但是,您不能使用 /Set 選項來覆寫之前在設計階段由組態所指定的值。 如需了解封裝組態套用的方式,請參閱<封裝組態>及<SQL Server 2012 中 Integration Services 功能的行為變更>。

/Ser[ver] server

(選擇性)。 當指定 /SQL/DTS 選項時,這個選項會指定要擷取封裝的來源伺服器名稱。 如果您省略 /Server 選項,而指定了 /SQL/DTS 選項,就會針對本機伺服器來嘗試執行封裝作業。 server_instance 值可括以引號。

指定 /ISServer 選項時,需要 /Ser[ver] 選項。

/SQ[L] package_path

載入儲存在 SQL Server 的 msdb 資料庫中的封裝。 儲存在 msdb 資料庫中的封裝是使用封裝部署模型所部署。 若要使用專案部署模型,執行部署到 Integration Services 伺服器的封裝,請使用 /ISServer 選項。 如需封裝和專案部署模型的詳細資訊,請參閱<部署專案和封裝>。

package_path 引數指定要擷取的封裝名稱。 如果路徑包含資料夾,則其結尾應為反斜線 ("\")。 package_path 值可括以引號。 如果 package_path 引數中指定的路徑或檔案名稱包含空格,必須將 package_path 引數括以引號。

您可以搭配 /User/Password/Server 選項和 /SQL 選項一起使用。

如果省略 /User 選項,就會利用 Windows 驗證來存取封裝。 如果您使用 /User 選項,則指定的 /User 登入名稱與 SQL Server 驗證相關聯。

/Password 選項只能配合 /User 選項一起使用。 如果您使用 /Password 選項,則是利用所提供的使用者名稱和密碼資訊來存取封裝。 如果忽略 /Password 選項,將使用空白密碼。

安全性注意事項安全性注意事項

盡可能使用 Windows 驗證。

如果省略 /Server 選項,將假設使用 SQL Server 的預設本機執行個體。

/SQL 選項不能和 /DTS/File 選項一起使用。 如果指定了多個選項,dtexec 便會失敗。

/Su[m]

(選擇性)。 顯示包含下一個元件將接收之列數的累加計數器。

/U[ser] user_name

(選擇性)。 允許擷取 SQL Server 驗證所保護的封裝。 只有在指定 /SQL 選項時,才使用這個選項。 user_name 值可括以引號。

安全性注意事項安全性注意事項

盡可能使用 Windows 驗證。

/Va[lidate]

(選擇性)。 在驗證階段之後,停止執行封裝 (並不會實際執行封裝)。 在驗證期間,使用 /WarnAsError 選項會導致 dtexec 將警告視為錯誤,因此,如果在驗證期間發生警告就會造成封裝失敗。

/VerifyB[uild] major[;minor[;build]]

(選擇性)。 根據驗證階段期間在 major、minor 及 build 引數指定的組建編號,來驗證封裝的組建編號。 如果發生不符的情形,將不會執行封裝。

這些值是 Long 整數。 此引數可以是下列這三種格式的其中一種,而且 major 的值永遠是必要的:

  • major

  • major;minor

  • major; minor; build

/VerifyP[ackageID] packageID

(選擇性)。 將封裝 GUID 與 package_id 引數所指定的值進行比較,藉此驗證要執行之封裝的 GUID。

/VerifyS[igned]

(選擇性)。 使 Integration Services 檢查封裝的數位簽章。 如果此封裝未簽署或是簽章無效,此封裝就會失敗。 如需詳細資訊,請參閱<使用數位簽章來識別封裝的來源>。

重要事項重要事項

當 Integration Services 設定為檢查封裝的簽章時,將只會檢查數位簽章是否存在、是否有效,以及是否來自信任的來源。 Integration Services 不會檢查封裝是否經過變更。

[!附註]

選擇性的 BlockedSignatureStates 登錄值可指定一個比 SQL Server 資料工具 (SSDT) 中所設定或 dtexec 命令列上所設定之數位簽章選項更具限制性的設定。 在此情況下,更具限制性的登錄設定會覆寫其他設定。

/VerifyV[ersionID] versionID

(選擇性)。 在封裝驗證階段期間,將封裝的版本 GUID 與 version_id 引數所指定的值進行比較,藉此驗證要執行之封裝的版本 GUID。

/VLog[Filespec]

(選擇性)。 將所有 Integration Services 封裝事件寫入設計封裝時啟用的記錄提供者。 若要讓 Integration Services 啟用文字檔的記錄提供者,並將記錄事件寫入指定的文字檔,請以 Filespec 參數的形式包含路徑和檔案名稱。

如果您未包含 Filespec 參數,Integration Services 將不會啟用文字檔的記錄提供者。 Integration Services 只會將記錄事件寫入設計封裝時啟用的記錄提供者。

/W[arnAsError]

(選擇性)。 使封裝將警告視為錯誤,因此,當驗證期間發生警告時,封裝便會失敗。 如果驗證期間沒有發生警告,也沒有指定 /Validate 選項,就會執行封裝。

/X86

(選擇性)。 使 SQL Server Agent 在 64 位元電腦上以 32 位元模式執行封裝。 當下列條件都成立時,SQL Server Agent 就會設定這個選項:

  • 作業步驟類型是 [SQL Server Integration Services 封裝]

  • 已經在 [新增作業步驟] 對話方塊的 [執行選項] 索引標籤上選取 [使用 32 位元執行階段] 選項。

您也可以為 SQL Server Agent 作業步驟設定此選項,方法是使用預存程序或 SQL Server 管理物件 (SMO),以程式設計方式建立作業。

這個選項只能由 SQL Server Agent 使用。 如果您在命令提示字元中執行 dtexec 公用程式,系統就會忽略此選項。

備註

命令選項的指定順序可能會影響封裝的執行方式:

  • 依照在命令列中發現選項的順序來處理選項。 在命令列上發現命令檔案時便會加以讀取, 命令檔案中的命令也就會依照發現的順序來處理。

  • 如果相同選項、參數或變數在同一個命令列陳述式中重複出現,以選項的最後一個執行個體優先。

  • /Set/ConfigFile 選項是依照發現的順序來處理。

範例

下列範例示範如何使用 dtexec 命令提示字元公用程式,設定及執行 SQL Server Integration Services 封裝。

執行封裝

若要利用 Windows 驗證來執行儲存至 SQL Server 的 SSIS 封裝,請使用下列程式碼:

dtexec /sq pkgOne /ser productionServer

若要執行儲存到 SSIS 封裝存放區中檔案系統資料夾的 SSIS 封裝,請使用下列程式碼:

dtexec /dts "\File System\MyPackage"

若要在不執行封裝的情況下,驗證使用 Windows 驗證且儲存在 SQL Server 中的封裝,請使用下列程式碼:

dtexec /sq pkgOne /ser productionServer /va

若要執行儲存在檔案系統中的 SSIS 封裝,請使用下列程式碼:

dtexec /f "c:\pkgOne.dtsx" 

若要執行儲存在檔案系統中的 SSIS 封裝,且要指定記錄選項,請使用下列程式碼:

dtexec /f "c:\pkgOne.dtsx" /l "DTS.LogProviderTextFile;c:\log.txt"

若要執行使用 Windows 驗證、儲存在 SQL Server 的預設本機執行個體,且會在執行之前確認版本的封裝,請使用下列程式碼:

dtexec /sq pkgOne /verifyv {c200e360-38c5-11c5-11ce-ae62-08002b2b79ef}

若要執行儲存在檔案系統中且在外部進行設定的 SSIS 封裝,請使用下列程式碼:

dtexec /f "c:\pkgOne.dtsx" /conf "c:\pkgOneConfig.cfg"

[!附註]

如果路徑或檔案名稱中包含空格,就必須將 /SQL、/DTS 或 /FILE 選項的 package_path 或 filespec 引數包含在引號中。 如果引數沒有用引號括住,則引數不能包含空格。

記錄選項

如果有三個記錄項目類型 A、B 和 C,下列不含參數的 ConsoleLog 選項會顯示這三個記錄類型及其所有欄位:

/CONSOLELOG

下列選項會顯示所有記錄類型,但只會顯示 [名稱] 和 [訊息] 資料行:

/CONSOLELOG NM

下列選項只會顯示記錄項目類型 A 的所有資料行:

/CONSOLELOG I;LogEntryTypeA

下列選項只會顯示記錄項目類型 A 及其 [名稱] 和 [訊息] 資料行:

/CONSOLELOG NM;I;LogEntryTypeA

下列選項會顯示記錄項目類型 A 和 B 的記錄項目:

/CONSOLELOG I;LogEntryTypeA;LogEntryTypeB

您可以利用多個 ConsoleLog 選項來取得相同結果:

/CONSOLELOG I;LogEntryTypeA /CONSOLELOG I;LogEntryTypeB

如果使用 ConsoleLog 選項時不含參數,會顯示所有欄位。 若包含 list_options 參數會使下列命令只顯示記錄項目 A 及其所有欄位:

/CONSOLELOG NM;I;LogEntryTypeA /CONSOLELOG

以下顯示除了記錄項目類型 A 之外的所有記錄項目:亦即會顯示記錄項目類型 B 及 C:

/CONSOLELOG E;LogEntryTypeA

下列範例利用多個 ConsoleLog 選項和單一排除項來取得相同結果:

/CONSOLELOG E;LogEntryTypeA /CONSOLELOG
/CONSOLELOG E;LogEntryTypeA /CONSOLELOG E;LogEntryTypeA
/CONSOLELOG E;LogEntryTypeA;LogEntryTypeA

下列範例不會顯示任何記錄訊息,因為當記錄檔類型同時在包含和排除的清單中找到時,就會將它排除。

/CONSOLELOG E;LogEntryTypeA /CONSOLELOG I;LogEntryTypeA

SET 選項

以下顯示如何使用 /SET 選項在從命令列啟動封裝時,變更任何封裝屬性或變數的值。

/SET \package\DataFlowTask.Variables[User::MyVariable].Value;newValue

專案選項

下列範例顯示如何使用 /Project/Package 選項。

/Project c:\project.ispac /Package Package1.dtsx

下列範例顯示如何使用 /Project 和 /Package 選項,以及設定封裝和專案參數。

/Project c:\project.ispac /Package Package1.dtsx /SET \Package.Variables[$Package::Parameter];1 /SET \Package.Variables[$Project::Parameter];1

ISServer 選項

下列範例顯示如何使用 /ISServer 選項。

dtexec /isserver "\SSISDB\MyFolder\MyProject\MyPackage.dtsx" /server "."

下列範例顯示如何使用 /ISServer 選項,以及設定專案和連接管理員參數。

/Server localhost /ISServer “\SSISDB\MyFolder\Integration Services Project1\Package.dtsx” /Par "$Project::ProjectParameter(Int32)";1 /Par "CM.SourceServer.InitialCatalog";SourceDB

相關工作

在 SQL Server Data Tools 中執行封裝

相關內容

www.mattmasson.com 上的部落格文章:結束碼、DTEXEC 和 SSIS 目錄