實作外部中繼資料
當元件從資料來源中斷連接時,可以使用 IDTSExternalMetadataColumnCollection100 介面,針對其外部資料來源的資料行,驗證輸入及輸出資料行集合中的資料行。 這個介面可讓您維護在外部資料來源的資料行快照,並將這些資料行對應到元件的輸入和輸出資料行集合中的資料行。
實作外部中繼資料行會增加元件開發的負擔與複雜性,因為您必須維護和驗證其他的資料行集合,但是能夠避免因驗證而往返於伺服器的昂貴成本,因此這個開發工作仍是非常值得的。
擴展外部中繼資料行
外部中繼資料行通常會在建立對應的輸入或輸出資料行時加入集合。 新資料行是透過呼叫 New 方法來建立。 接著會設定資料行的屬性以符合外部資料來源。
外部中繼資料行是透過將外部中繼資料行的識別碼指派到輸入或輸出資料行的 ExternalMetadataColumnID 屬性,以對應至相對應的輸入或輸入資料行。 這可讓您透過使用集合的 GetObjectByID 方法,輕易地找到特定輸入或輸出資料行的外部中繼資料行。
下列範例顯示如何建立外部中繼資料行,然後透過設定 ExternalMetadataColumnID 屬性將資料行對應至輸出資料行。
public void CreateExternalMetaDataColumn(IDTSOutput100 output, int outputColumnID )
{
IDTSOutputColumn100 oColumn = output.OutputColumnCollection.GetObjectByID(outputColumnID);
IDTSExternalMetadataColumn100 eColumn = output.ExternalMetadataColumnCollection.New();
eColumn.DataType = oColumn.DataType;
eColumn.Precision = oColumn.Precision;
eColumn.Scale = oColumn.Scale;
eColumn.Length = oColumn.Length;
eColumn.CodePage = oColumn.CodePage;
oColumn.ExternalMetadataColumnID = eColumn.ID;
}
Public Sub CreateExternalMetaDataColumn(ByVal output As IDTSOutput100, ByVal outputColumnID As Integer)
Dim oColumn As IDTSOutputColumn100 = output.OutputColumnCollection.GetObjectByID(outputColumnID)
Dim eColumn As IDTSExternalMetadataColumn100 = output.ExternalMetadataColumnCollection.New
eColumn.DataType = oColumn.DataType
eColumn.Precision = oColumn.Precision
eColumn.Scale = oColumn.Scale
eColumn.Length = oColumn.Length
eColumn.CodePage = oColumn.CodePage
oColumn.ExternalMetadataColumnID = eColumn.ID
End Sub
驗證外部中繼資料行
對於維護外部中繼資料行集合的元件,驗證將需要額外的步驟,因為您必須針對其他的資料行集合來驗證。 驗證可以分成連接式驗證或中斷連接式驗證。
連接式驗證
當元件連接至外部資料來源時,會直接針對外部資料來源,驗證輸入或輸出集合中的資料行。 此外,也必須驗證外部中繼資料集合中的資料行。 這是必要的,因為透過使用 SQL Server Data Tools (SSDT) 中的 [進階編輯器] 即可修改外部中繼資料集合,而且對集合的變更是無法偵測的。 因此,在連接時,元件必須確定外部中繼資料資料行集合中的資料行會持續反映外部資料來源的資料行。
您可以選擇將集合的 屬性設定IsUsed為 false
,以隱藏 進階編輯器 中的外部元數據集合。 然而這也可能會隱藏編輯器的 [資料行對應] 索引標籤,它可讓使用者從輸入或輸出集合將資料行對應到外部中繼資料行集合中的資料行。 將此屬性設定為 false
不會防止開發人員以程序設計方式修改集合,但它確實為 SQL Server Data Tools (SSDT) 中專用元件的外部元數據行集合提供保護層級。
中斷連接式驗證
當元件和外部資料來源中斷連接時,因為輸入或輸出集合中的資料行會直接針對外部中繼資料集合中的資料行 (而非針對外部來源) 進行驗證,驗證就較為簡單。 當尚未建立與外部數據源的連接,或當 屬性為 false
時,元件應該執行中斷連線的ValidateExternalMetadata驗證。
下列程式碼範例示範元件的實作,以針對其外部中繼資料行集合執行驗證。
public override DTSValidationStatus Validate()
{
if( this.isConnected && ComponentMetaData.ValidateExternalMetaData )
{
// TODO: Perform connected validation.
}
else
{
// TODO: Perform disconnected validation.
}
}
Public Overrides Function Validate() As DTSValidationStatus
If Me.isConnected AndAlso ComponentMetaData.ValidateExternalMetaData Then
' TODO: Perform connected validation.
Else
' TODO: Perform disconnected validation.
End If
End Function
使用 Integration Services 保持最新狀態
如需來自Microsoft的最新下載、文章、範例和影片,以及來自社群的所選解決方案,請流覽 MSDN 上的 Integration Services 頁面:
流覽 MSDN 上的 Integration Services 頁面
如需這些更新的自動通知,請訂閱頁面上可用的 RSS 摘要。