高級數據倉庫
SQL Server 2012
[本文檔僅供預覽,在以後的版本中可能會更改。空白主題作為佔位符包含在內。]
本主題提供了有關如何使用 Integration Services 將數據加載到 高級數據倉庫 中的基本信息。 Integration Services 是用於數據的高性能提取、轉換和加載 (ETL) 的 SQL Server 的組件,通常用於填充和更新數據倉庫。
高級數據倉庫 目標是一個 Integration Services 組件,使您可以通過使用 Integration Services dtsx 包將數據加載到 高級數據倉庫 中。 在用於 高級數據倉庫 的包工作流中,您可以從多個源加載數據並且合併來自多個源的數據,以及將數據加載到多個目標中。 加載將在包內和同時運行的多個包中並行發生,直到在同一工具上並行運行最多 10 個加載。
除了本文中描述的這些任務之外,您還可以在將數據加載到數據倉庫中之前,使用 Integration Services 對數據進行篩選、轉換、分析和清除。 還可以通過運行 SQL 語句、運行子包或發送電子郵件,增強包的工作流。 有關 Integration Services 的完整文檔,請參閲 SQL Server Integration Services。
數據類型
在使用 Integration Services 將數據從數據源加載到 高級數據倉庫 數據庫時,數據首先從源數據映射到 Integration Services 數據類型。 這允許來自多個數據源的數據映射到一組通用的數據類型。
然後,從 Integration Services 高級數據倉庫 數據類型映射這些數據。 下表列出了可映射到各 高級數據倉庫 數據類型的 Integration Services 數據類型。
|
高級數據倉庫 數據類型
|
映射到 高級數據倉庫 數據類型的 Integration Services 數據類型
|
|
BIT |
DT_BOOL |
|
BIGINT |
DT_I1、DT_I2、DT_I4、DT_I8、DT_UI1、DT_UI2、DT_UI4 |
|
CHAR |
DT_STR |
|
DATE |
DT_DBDATE |
|
DATETIME |
DT_DATE、DT_DBDATE、DT_DBTIMESTAMP、DT_DBTIMESTAMP2 |
|
DATETIME2 |
DT_DATE、DT_DBDATE、DT_DBTIMESTAMP、DT_DBTIMESTAMP2 |
|
DATETIMEOFFSET |
DT_DBTIMESTAMPOFFSET |
|
DECIMAL |
DT_DECIMAL、DT_I1、DT_I2、DT_I4、DT_I4、DT_I8、DT_NUMERIC、DT_UI1、DT_UI2、DT_UI4、DT_UI8 |
|
FLOAT |
DT_R4、DT_R8 |
|
INT |
DT_I1、DTI2、DT_I4、DT_UI1、DT_UI2 |
|
MONEY |
DT_CY |
|
NCHAR |
DT_WSTR |
|
NUMERIC |
DT_DECIMAL、DT_I1、DT_I2、DT_I4、DT_I8、DT_NUMERIC、DT_UI1、DT_UI2、DT_UI4、DT_UI8 |
|
NVARCHAR |
DT_WSTR、DT_STR |
|
REAL |
DT_R4 |
|
SMALLDATETIME |
DT_DBTIMESTAMP2 |
|
SMALLINT |
DT_I1、DT_I2、DT_UI1 |
|
SMALLMONEY |
DT_R4 |
|
TIME |
DB_TIME2 |
|
TINYINT |
DT_I1 |
|
UNIQUEIDENTIFIER |
DT_GUID |
|
VARBINARY |
DT_BYTES |
|
VARCHAR |
DT_STR |
對數據類型精度的有限支持
如果您映射 DT_NUMERIC 或 DT_DECIMAL 輸入列並且列中包含的值的精度大於 28,高級數據倉庫 將會生成驗證錯誤。
不支持的數據類型
高級數據倉庫 不支持通常包含二進制大型對象 (BLOB) 數據的以下 Integration Services 數據類型:
- DT_IMAGE
- DT_NTEXT
- DT_TEXT
若要將包含這些類型的數據的列加載到 高級數據倉庫 中,您必須在數據流中添加一個數據轉換上游組件,以便將數據轉換為兼容的數據類型。
[返回頁首]
一般備註
在某一 Integration Services 包具有多個正在運行的 高級數據倉庫 目標並且其中一個連接終止時,Integration Services 將停止將數據推送到所有 高級數據倉庫 目標。
限制和侷限
目標的最大數目
在 Integration Services 包中,相同數據源的 高級數據倉庫 目標的數目受到處於活動狀態的加載的最大數目的限制。 該最大值是預先配置的,用户不可配置。 有關每個工具的加載和排隊的加載的最大數目,請參閲 SQL Server PDW 幫助。
在運行包時,相同數據源的每個 Integration Services 包目標將作為一個加載計數。 例如,假定處於活動狀態的加載的最大數目為 10。 如果該包嘗試為相同數據源打開 11 個或更多的目標,則該包將不運行。
多個包可以同時運行,只要每個包所使用的處於活動狀態的加載數目未超過該最大數目。 例如,如果處於活動狀態的加載的最大數目為 10,則您可以同時運行兩個包,每個包使用 10 個目標。 在一個包運行時,另一個包在加載隊列中等待。
如果加載隊列中加載的數目超過排隊的最大加載數,則該包將不運行。 例如,如果最大加載數是每個工具 10 個,並且排隊的加載的最大數目是每個工具 40 個,則您可以同時運行 5 個 Integration Services 包,每個包打開 10 個目標。 如果您嘗試運行第 6 個包,該包將不會運行。
[返回頁首]
鎖定行為
在使用 Integration Services 加載數據時,高級數據倉庫 使用行級鎖更新目標表中的數據。 這意味着,在更新每一行時,對於讀取和寫入操作,將鎖定每一行。 在數據加載到臨時表中時,將不鎖定目標表中的行。
使用 Integration Services 加載數據將啓動這些鎖:
- 針對目標表和目標數據庫的 SharedUpdate 鎖。
- 針對臨時數據庫表的 SharedUpdate 鎖。 這在使用臨時數據庫時適用。
[返回頁首]