Implementazione di metadati esterni
Si applica a: SQL Server SSIS Integration Runtime in Azure Data Factory
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. 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.
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.
Popolamento di colonne di metadati esterni
Le colonne di metadati esterni vengono in genere aggiunte alla raccolta quando viene creata la corrispondente colonna di input o di output. Le nuove colonne vengono create chiamando il metodo New. Le proprietà della colonna vengono quindi impostate in base all'origine dati esterna.
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. 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.
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.
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 esterni
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. La convalida può essere eseguita in modalità connessa o disconnessa.
Convalida in modalità connessa
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. È inoltre necessario convalidare le colonne della raccolta di metadati esterni. Questa operazione è necessaria perché la raccolta di metadati esterni può essere modificata tramite l'Editor avanzato in SQL Server Data Tools (SSDT) e le modifiche non sono individuabili. 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.
È possibile scegliere di nascondere la raccolta di metadati esterni nell'Editor avanzato impostando la proprietà IsUsed della raccolta su false. Tuttavia, in questo modo si nasconde anche la scheda Mapping colonne dell'editor, che consente agli utenti di eseguire il mapping delle colonne della raccolta di input o output alle colonne della raccolta di colonne di metadati esterni. L'impostazione di questa proprietà su false non impedisce agli sviluppatori di modificare la raccolta a livello di programmazione, ma fornisce un livello di protezione per la raccolta di colonne di metadati esterni di un componente usato esclusivamente in SQL Server Data Tools (SSDT).
Convalida in modalità disconnessa
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. Un componente deve eseguire la convalida in modalità disconnessa quando la connessione all'origine dati esterna non è stata stabilita o quando la proprietà ValidateExternalMetadata è 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.
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