Implementera externa metadata

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

När en komponent är frånkopplad från sin datakälla kan du validera kolumnerna i in- och utkolumnsamlingarna mot kolumnerna vid dess externa datakälla genom att använda gränssnittet IDTSExternalMetadataColumnCollection100 . Detta gränssnitt låter dig behålla en ögonblicksbild av kolumnerna vid den externa datakällan och mappa dessa kolumner till kolumnerna i komponentens in- och utkolumnsamling.

Att implementera externa metadatakolumner lägger till ett lager av overhead och komplexitet i komponentutvecklingen, eftersom du måste underhålla och validera mot en extra kolumnsamling, men möjligheten att undvika dyra rundresor till servern för validering kan göra detta utvecklingsarbete värt det.

Fylla i kolumner för externa metadata

Externa metadatakolumner läggs vanligtvis till i samlingen när motsvarande indata- eller utdatakolumn skapas. Nya kolumner skapas genom att anropa metoden New . Kolumnens egenskaper ställs sedan in för att matcha den externa datakällan.

Den externa metadatakolumnen mappas till motsvarande in- eller utdatakolumn genom att tilldela ID:t för den externa metadatakolumnen ExternalMetadataColumnID till egenskapen för in- eller utdatakolumnen. Detta låter dig enkelt hitta kolumnen för extern metadata för en specifik in- eller utdatakolumn genom att använda GetObjectByID samlingens metod.

Följande exempel visar hur man skapar en extern metadatakolumn och sedan mappar kolumnen till en utdatakolumn genom att sätta egenskapen 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  

Validering med externa metadatakolumner

Validering kräver ytterligare steg för komponenter som upprätthåller en extern metadatakolumnsamling, eftersom du måste validera mot en ytterligare samling kolumner. Validering kan delas in i sammanhängande validering eller osammanhängande validering.

Sammankopplad validering

När en komponent är ansluten till en extern datakälla verifieras kolumnerna i indata- eller utdatasamlingarna direkt mot den externa datakällan. Dessutom måste kolumnerna i den externa metadatasamlingen valideras. Detta krävs eftersom den externa metadatasamlingen kan modifieras med Rozšírený editor i SQL Server Data Tools (SSDT), och ändringar som gjorts i samlingen är inte upptäckbara. Därför måste komponenterna, när de är sammankopplade, se till att kolumnerna i den externa metadatakolumnsamlingen fortsätter att spegla kolumnerna vid den externa datakällan.

Du kan välja att dölja den externa metadatasamlingen i Rozšírený editor genom att sätta IsUsed samlarens egenskap till false. Detta döljer dock också fliken Kolumnmappning i redigeraren, som låter användare mappa kolumner från indata- eller utdatasamlingen till kolumnerna i den externa metadatakolumnen. Att sätta denna egenskap till falsk hindrar inte utvecklare från att programmatiskt modifiera samlingen, men det ger en viss skyddsnivå för insamlingen av externa metadatakolumner av en komponent som används uteslutande i SQL Server Data Tools (SSDT).

Frånkopplad validering

När en komponent kopplas bort från en extern datakälla förenklas valideringen eftersom kolumnerna i indata- eller utdatasamlingen verifieras direkt mot kolumnerna i den externa metadatasamlingen och inte mot den externa källan. En komponent bör utföra disconnected-validering när anslutningen till dess externa datakälla inte har etablerats, eller när egenskapen ValidateExternalMetadata är falsk.

Följande kodexempel demonstrerar en implementation av en komponent som utför validering mot sin externa metadatakolumnsamling.

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