共用方式為


封裝組態

SQL Server Integration Services 提供您可用來在執行階段更新屬性值的封裝組態。

注意

組態可用於封裝部署模型。 參數是用來取代專案部署模型的組態。 專案部署模型可讓您將 Integration Services 專案部署到 Integration Services 伺服器。 如需有關部署模型的詳細資訊,請參閱< Deployment of Projects and Packages>。

組態是您加入已完成封裝的一組屬性/值配對。 一般而言,您建立封裝、在封裝開發期間設定封裝物件的屬性,然後將組態加入至封裝。 當封裝執行時,它會從組態取得新的屬性值; 舉例來說,經由使用組態,您可以變更連接管理員的連接字串,或更新變數的值。

封裝組態提供下列優點:

  • 組態會使將封裝從開發環境移至實際執行環境更為容易。 例如,組態可以更新來源檔案的路徑,或者變更資料庫或伺服器的名稱。

  • 組態在您將封裝部署到許多不同的伺服器時非常有用。 例如,組態中每個已部署封裝的變數都可包含不同的磁碟空間值,如果可用磁碟空間不符合這個值,封裝就不會執行。

  • 組態使封裝更有彈性。 例如,組態可以更新屬性運算式中使用的變數值。

Integration Services 支援數種儲存封裝組態的不同方法,例如 XML 檔案、SQL Server 資料庫中的資料表,以及環境與封裝變數。

每個組態都是屬性/值配對。 XML 組態檔與 SQL Server 組態類型可以包含多重組態。

當您建立用以安裝封裝的封裝部署公用程式時,會包含這些組態。 在安裝封裝時,您可以在封裝的安裝過程中更新這些組態。

了解如何在執行階段套用封裝組態

當您使用 dtexec 命令提示字元公用程式 (dtexec.exe) 來執行部署的封裝時,此公用程式會套用封裝組態兩次。 當此公用程式套用您在命令列上所指定之選項的前後,都會套用組態。

當此公用程式載入及執行此封裝時,事件會依照下列順序發生:

  1. dtexec 公用程式會載入此封裝。

  2. 此公用程式會套用您在設計階段於封裝內所指定的組態,而且會依照封裝內所指定的順序 (這其中一個例外狀況是父封裝變數組態。此公用程式只會稍後於流程中套用這些組態一次)。

  3. 然後此公用程式會套用您在命令列上所指定的任何選項。

  4. 然後此公用程式會重新載入您在設計階段於封裝內所指定的組態,而且會依照封裝內所指定的順序 (同樣地,此規則的例外是父封裝變數組態)。 此公用程式會使用您所指定的任何命令列選項來重新載入組態。 因此,可能會從不同的位置重新載入不同的值。

  5. 此公用程式會套用父封裝變數組態。

  6. 此公用程式會執行此封裝。

dtexec 公用程式套用組態的方式會影響下列命令列選項:

  • 您可以在執行階段使用 /Connection/Set 選項,從不同於設計時所指定的位置載入封裝組態。

  • 您可以使用 /ConfigFile 選項來載入您並未在設計階段指定的其他組態。

但是,這些命令列選項確實有一些限制:

  • 您不能使用 /Set/Connection 選項來覆寫同樣由組態所設定的單一值。

  • 您不能使用 /ConfigFile 選項來載入可取代您在設計階段指定之組態的組態。

如需這些選項的詳細資訊,以及這些選項的行為在 SQL Server 2014 Integration Services (SSIS) 和舊版之間有何差異,請參閱SQL Server 2014 中的 Integration Services 功能行為變更

封裝組態類型

下表描述封裝組態類型。

類型 描述
XML 組態檔 XML 檔案包含組態。 XML 檔案可以包含多重組態。
環境變數 環境變數包含組態。
登錄項目 登錄項目包含組態。
父封裝變數 封裝中的變數包含組態。 這個組態類型通常用來更新子封裝中的屬性。
SQL Server 資料表 SQL Server 資料庫中的資料表包含此組態。 資料表可以包含多重組態。

XML 組態檔

如果選取 [XML 組態檔] 組態類型,您可以建立新的組態檔、重複使用現有的檔案並加入新組態,或者重複使用現有的檔案但覆寫現有的檔案內容。

XML 組態檔包含兩個區段:

  • 包含組態檔相關資訊的標題。 此元素包含諸如檔案建立時間和產生檔案之使用者的姓名等屬性。

  • 包含每個組態相關資訊的組態項目。 此元素包含諸如屬性 (Property) 路徑和屬性 (Property) 的已設定值等屬性 (Attribute)。

下面的 XML 程式碼會示範 XML 組態檔的語法。 這個範例會示範名為 MyVar之整數變數的 Value 屬性組態。

<?xml version="1.0"?>  
<DTSConfiguration>  
   <DTSConfigurationHeading>  
      <DTSConfigurationFileInfo  
          GeneratedBy="DomainName\UserName"  
          GeneratedFromPackageName="Package"  
          GeneratedFromPackageID="{2AF06766-817A-4E28-9878-0DE37A150648}"  
          GeneratedDate="2/01/2005 5:58:09 PM"/>  
   </DTSConfigurationHeading>  
   <Configuration ConfiguredType="Property" Path="\Package.Variables[User::MyVar].Value" ValueType="Int32">  
      <ConfiguredValue>0</ConfiguredValue>  
   </Configuration>  
</DTSConfiguration>  
  

登錄項目

如果您想使用登錄項目儲存組態,可以使用現有的機碼或在 HKEY_CURRENT_USER 中建立新的機碼。 您所使用的登錄機碼必須具有名為 Value 的值。 該值可以是 DWORD 或字串。

如果您選取 [登錄項目] 組態類型,就要在 [登錄項目] 方塊中輸入登錄機碼的名稱。 格式為 <登錄機碼>。 如果您想要使用不在HKEY_CURRENT_USER根目錄的登錄機碼,請使用登錄機碼\登錄機碼\... > 格式 < 來識別金鑰。 例如,若要使用位於 SSISPackages 中的 MyPackage 機碼,請輸入 SSISPackages\MyPackage

SQL Server

如果您選取 [SQL Server] 組態類型,則需要指定與您想要儲存組態之 SQL Server 資料庫的連線。 您可以將組態儲存至現有的資料表,或者在指定的資料庫中建立新的資料表。

下列 SQL 陳述式顯示 [封裝組態精靈] 提供的預設 CREATE TABLE 陳述式。

CREATE TABLE [dbo].[SSIS Configurations]  
(  
ConfigurationFilter NVARCHAR(255) NOT NULL,  
ConfiguredValue NVARCHAR(255) NULL,  
PackagePath NVARCHAR(255) NOT NULL,  
ConfiguredValueType NVARCHAR(20) NOT NULL  
)  
  

您提供給組態的名稱為 ConfigurationFilter 資料行中儲存的值。

直接和間接組態

Integration Services 提供直接與間接組態。 如果您直接指定組態,Integration Services 便會在設定項目與封裝物件屬性之間建立直接連結。 來源的位置沒有變更時,使用直接組態是較好的選擇。 例如,如果您確定封裝中的所有部署都使用相同的檔案路徑,便可指定 XML 組態檔。

間接組態會使用環境變數。 與直接指定組態設定的方法不同,間接組態會指向包含組態值的環境變數。 如果組態的位置可以針對封裝的每個部署變更,則使用間接組態是較好的選擇。

建立套件設定