Implementazione di metadati esterniImplementing External Metadata

Quando un componente è disconnesso dalla relativa origine dati, è possibile convalidare le colonne nelle raccolte di colonne di input e output in base alle colonne presenti nell'origine dati esterna utilizzando l'interfaccia IDTSExternalMetadataColumnCollection100.When a component is disconnected from its data source, you can validate the columns in the input and output column collections against the columns at its external data source by using the IDTSExternalMetadataColumnCollection100 interface. Questa interfaccia consente di mantenere uno snapshot delle colonne presenti nell'origine dati esterna e di eseguire il mapping di queste colonne alle raccolte di colonne di input e output del componente.This interface lets you maintain a snapshot of the columns at the external data source and map these columns to the columns in the input and output column collection of the component.

L'implementazione di colonne di metadati esterni aggiunge un livello di overhead e complessità allo sviluppo di componenti, perché è necessario mantenere una raccolta aggiuntiva di colonne ed eseguire la convalida in base ad essa, ma la possibilità di evitare onerosi round trip al server per la convalida giustifica questa attività di sviluppo.Implementing external metadata columns adds a layer of overhead and complexity to component development, because you must maintain and validate against an additional column collection, but the ability to avoid expensive round trips to the server for validation may make this development work worthwhile.

Popolamento di colonne di metadati esterniPopulating External Metadata Columns

Le colonne di metadati esterni vengono in genere aggiunte alla raccolta quando viene creata la corrispondente colonna di input o di output.External metadata columns are typically added to the collection when the corresponding input or output column is created. Le nuove colonne vengono create chiamando il metodo New.New columns are created by calling the New method. Le proprietà della colonna vengono quindi impostate in base all'origine dati esterna.The properties of the column are then set to match the external data source.

Il mapping della colonna di metadati esterni alla corrispondente colonna di input o di output viene eseguito assegnando l'ID della prima alla proprietà ExternalMetadataColumnID della seconda.The external metadata column is mapped to the corresponding input or output column by assigning the ID of the external metadata column to the ExternalMetadataColumnID property of the input or output column. In questo modo è possibile individuare facilmente la colonna di metadati esterni per una specifica colonna di input o di output utilizzando il metodo GetObjectByID della raccolta.This lets you locate the external metadata column easily for a specific input or output column by using the GetObjectByID method of the collection.

Nell'esempio seguente viene illustrato come creare una colonna di metadati esterni e quindi eseguirne il mapping a una colonna di output impostando la proprietà ExternalMetadataColumnID.The following example shows how to create an external metadata column and then map the column to an output column by setting the ExternalMetadataColumnID property.

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  

Convalida delle colonne di metadati esterniValidating with External Metadata Columns

La convalida richiede passaggi aggiuntivi per i componenti che mantengono una raccolta di colonne di metadati esterni, perché è necessario eseguirla in base a una raccolta aggiuntiva di colonne.Validation requires additional steps for components that maintain an external metadata column collection, because you must validate against an additional collection of columns. La convalida può essere eseguita in modalità connessa o disconnessa.Validation can be divided into connected validation or disconnected validation.

Convalida in modalità connessaConnected Validation

Quando un componente è connesso a un'origine dati esterna, le colonne delle raccolte di input o output vengono verificate direttamente in base all'origine dati esterna.When a component is connected to an external data source, the columns in the input or output collections are verified directly against the external data source. È inoltre necessario convalidare le colonne della raccolta di metadati esterni.Additionally, the columns in the external metadata collection must be validated. Questa operazione è necessaria perché la raccolta dei metadati esterni può essere modificata utilizzando il Editor avanzato in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), e le modifiche apportate alla raccolta non sono rilevabili.This is required because the external metadata collection can be modified by using the Advanced Editor in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), and changes made to the collection are not detectable. Pertanto, se connessi, i componenti devono assicurarsi che le colonne della raccolta di colonne di metadati esterni continuino a riflettere le colonne presenti nell'origine dati esterna.Therefore, when connected, components must make sure that the columns in the external metadata column collection continue to reflect the columns at the external data source.

È possibile scegliere di nascondere la raccolta di metadati esterni nel Editor avanzato impostando il IsUsed proprietà della raccolta in false.You may choose to hide the external metadata collection in the Advanced Editor by setting the IsUsed property of the collection to false. Tuttavia in questo modo si nasconde anche la Mapping colonne scheda dell'editor, che consente agli utenti di eseguire il mapping di colonne da una raccolta di input o output e le colonne nella raccolta delle colonne di metadati esterna.However this also hides the Column Mapping tab of the editor, which lets users map columns from the input or output collection to the columns in the external metadata column collection. Impostando questa proprietà su false non impedisce agli sviluppatori di modifica a livello di codice della raccolta, ma fornisce un livello di protezione per la raccolta di colonne di metadati esterna di un componente utilizzato esclusivamente in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).Setting this property to false does not prevent developers from programmatically modifying the collection, but it does provide a level of protection for the external metadata column collection of a component that is used exclusively in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).

Convalida in modalità disconnessaDisconnected Validation

Quando un componente è disconnesso da un'origine dati esterna, la convalida risulta semplificata, perché le colonne della raccolta di input o output vengono verificate direttamente in base alle colonne della raccolta di metadati esterni e non rispetto all'origine esterna.When a component is disconnected from an external data source, validation is simplified because the columns in the input or output collection are verified directly against the columns in the external metadata collection and not against the external source. Un componente deve eseguire la convalida in modalità disconnessa quando non è stata stabilita la connessione all'origine dati esterna o quando il ValidateExternalMetadata proprietà false.A component should perform disconnected validation when the connection to its external data source has not been established, or when the ValidateExternalMetadata property is false.

Nell'esempio di codice seguente è illustrata un'implementazione di un componente che esegue la convalida in base alla raccolta di colonne di metadati esterni.The following code example demonstrates an implementation of a component that performs validation against its external metadata column collection.

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  

Vedere ancheSee Also

Flusso di datiData Flow