封裝組態
SQL Server Integration Services 提供您可用來在執行階段更新屬性值的封裝組態。
注意
組態可用於封裝部署模型。 參數是用來取代專案部署模型的組態。 專案部署模型可讓您將 Integration Services 專案部署到 Integration Services 伺服器。 如需有關部署模型的詳細資訊,請參閱< Deployment of Projects and Packages>。
組態是您加入已完成封裝的一組屬性/值配對。 一般而言,您建立封裝、在封裝開發期間設定封裝物件的屬性,然後將組態加入至封裝。 當封裝執行時,它會從組態取得新的屬性值; 舉例來說,經由使用組態,您可以變更連接管理員的連接字串,或更新變數的值。
封裝組態提供下列優點:
組態會使將封裝從開發環境移至實際執行環境更為容易。 例如,組態可以更新來源檔案的路徑,或者變更資料庫或伺服器的名稱。
組態在您將封裝部署到許多不同的伺服器時非常有用。 例如,組態中每個已部署封裝的變數都可包含不同的磁碟空間值,如果可用磁碟空間不符合這個值,封裝就不會執行。
組態使封裝更有彈性。 例如,組態可以更新屬性運算式中使用的變數值。
Integration Services 支援數種儲存封裝組態的不同方法,例如 XML 檔案、SQL Server 資料庫中的資料表,以及環境與封裝變數。
每個組態都是屬性/值配對。 XML 組態檔與 SQL Server 組態類型可以包含多重組態。
當您建立用以安裝封裝的封裝部署公用程式時,會包含這些組態。 在安裝封裝時,您可以在封裝的安裝過程中更新這些組態。
了解如何在執行階段套用封裝組態
當您使用 dtexec 命令提示字元公用程式 (dtexec.exe) 來執行部署的封裝時,此公用程式會套用封裝組態兩次。 當此公用程式套用您在命令列上所指定之選項的前後,都會套用組態。
當此公用程式載入及執行此封裝時,事件會依照下列順序發生:
dtexec 公用程式會載入此封裝。
此公用程式會套用您在設計階段於封裝內所指定的組態,而且會依照封裝內所指定的順序 (這其中一個例外狀況是父封裝變數組態。此公用程式只會稍後於流程中套用這些組態一次)。
然後此公用程式會套用您在命令列上所指定的任何選項。
然後此公用程式會重新載入您在設計階段於封裝內所指定的組態,而且會依照封裝內所指定的順序 (同樣地,此規則的例外是父封裝變數組態)。 此公用程式會使用您所指定的任何命令列選項來重新載入組態。 因此,可能會從不同的位置重新載入不同的值。
此公用程式會套用父封裝變數組態。
此公用程式會執行此封裝。
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 組態檔。
間接組態會使用環境變數。 與直接指定組態設定的方法不同,間接組態會指向包含組態值的環境變數。 如果組態的位置可以針對封裝的每個部署變更,則使用間接組態是較好的選擇。
相關工作
相關內容
msdn.microsoft.com 上的技術文件: Understanding Integration Services Package Configurations(了解 Integration Services 封裝組態)
部落格文章: 在程式碼中建立套件 -套件組態, www.sqlis.com。
部落格文章 API 範例 - 以程式設計方式將組態檔新增至套件,blogs.msdn.com。