Creazione di una destinazione ODBC con il componente script

Si applica a:SQL Server Integration Runtime SSIS in Azure Data Factory

In SQL Server Integration Services, di solito i dati vengono salvati in una destinazione ODBC usando una destinazione ADO.NET e .il provider di dati .NET Framework per ODBC. È possibile, tuttavia, creare anche una destinazione ODBC ad hoc da utilizzare in un solo pacchetto. Per creare questa destinazione ODBC ad hoc, si utilizza il componente script come illustrato nell'esempio seguente.

Nota

Se si desidera creare un componente da riutilizzare più facilmente con più attività Flusso di dati e più pacchetti, è possibile utilizzare il codice di questo esempio di componente script come punto iniziale per un componente del flusso di dati personalizzato. Per altre informazioni, vedere Sviluppo di un componente del flusso di dati personalizzato.

Esempio

L'esempio seguente illustra come creare un componente di destinazione che usa una gestione connessione ODBC esistente per salvare i dati del flusso di dati in una tabella di Microsoft SQL Server.

Questo esempio è una versione modificata della destinazione ADO.NET personalizzata visualizzata nell'argomento Creazione di una destinazione con il componente script. In questo esempio, tuttavia, la destinazione ADO.NET personalizzata è stata modificata per l'utilizzo di una gestione connessione ODBC e il salvataggio dei dati in una destinazione ODBC. Queste modifiche includono anche le seguenti:

  • Non è possibile chiamare il metodo AcquireConnection della gestione connessione ODBC dal codice gestito, perché restituisce un oggetto nativo. In questo esempio viene pertanto usata la stringa di connessione della gestione connessione per connettersi direttamente all'origine dati tramite il provider di dati .NET Framework per ODBC gestito.

  • Per l'elemento OdbcCommand sono previsti parametri posizionali. Le posizioni dei parametri sono indicate dai punti interrogativi (?) nel testo del comando. Al contrario, per un elemento SqlCommand sono previsti parametri denominati.

In questo esempio viene usata la tabella Person.Address del database di esempio AdventureWorks. Nell'esempio vengono passate la prima e la quarta colonna, ovvero le colonne intAddressID e nvarchar(30) City di questa tabella attraverso il flusso di dati. Questi stessi dati vengono usati negli esempi di origine, trasformazione e destinazione dell'argomento Sviluppo di tipi specifici di componenti script.

Per configurare l'esempio di componente script

  1. Creare una gestione connessione ODBC che si connette al database AdventureWorks.

  2. Creare una tabella di destinazione eseguendo il comando Transact-SQL seguente nel database AdventureWorks:

    CREATE TABLE [Person].[Address2]([AddressID] [int] NOT NULL,  
        [City] [nvarchar](30) NOT NULL)  
    
  3. Aggiungere un nuovo componente script all'area di progettazione del flusso di dati e configurarlo come destinazione.

  4. Connettere l'output di un'origine o di una trasformazione a monte al componente di destinazione in Progettazione SSIS. È possibile connettere direttamente un'origine a una destinazione senza alcuna trasformazione. Per assicurarsi che questo esempio funzioni, l'output del componente a monte deve includere almeno le colonne AddressID e City della tabella Person.Address del database di esempio AdventureWorks.

  5. Aprire l'Editor trasformazione Script. Nella pagina Colonne di input selezionare le colonne AddressID e City.

  6. Nella pagina Input e output rinominare l'input con un nome più descrittivo, ad esempio MyAddressInput.

  7. Nella pagina Gestioni connessioni aggiungere o creare la gestione connessione ODBC con un nome descrittivo, ad esempio MyODBCConnectionManager.

  8. Nella pagina Script fare clic su Modifica script, quindi immettere lo script seguente nella classe ScriptMain.

  9. Chiudere l'ambiente di sviluppo dello script e Editor trasformazione Script, quindi eseguire l'esempio.

    Imports System.Data.Odbc  
    ...  
    Public Class ScriptMain  
        Inherits UserComponent  
    
        Dim odbcConn As OdbcConnection  
        Dim odbcCmd As OdbcCommand  
        Dim odbcParam As OdbcParameter  
    
        Public Overrides Sub AcquireConnections(ByVal Transaction As Object)  
    
            Dim connectionString As String  
            connectionString = Me.Connections.MyODBCConnectionManager.ConnectionString  
            odbcConn = New OdbcConnection(connectionString)  
            odbcConn.Open()  
    
        End Sub  
    
        Public Overrides Sub PreExecute()  
    
            odbcCmd = New OdbcCommand("INSERT INTO Person.Address2(AddressID, City) " & _  
                "VALUES(?, ?)", odbcConn)  
            odbcParam = New OdbcParameter("@addressid", OdbcType.Int)  
            odbcCmd.Parameters.Add(odbcParam)  
            odbcParam = New OdbcParameter("@city", OdbcType.NVarChar, 30)  
            odbcCmd.Parameters.Add(odbcParam)  
    
        End Sub  
    
        Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)  
    
            With odbcCmd  
                .Parameters("@addressid").Value = Row.AddressID  
                .Parameters("@city").Value = Row.City  
                .ExecuteNonQuery()  
            End With  
    
        End Sub  
    
        Public Overrides Sub ReleaseConnections()  
    
            odbcConn.Close()  
    
        End Sub  
    
    End Class  
    
    using System.Data.Odbc;  
    ...  
    public class ScriptMain :  
        UserComponent  
    {  
        OdbcConnection odbcConn;  
        OdbcCommand odbcCmd;  
        OdbcParameter odbcParam;  
    
        public override void AcquireConnections(object Transaction)  
        {  
    
            string connectionString;  
            connectionString = this.Connections.MyODBCConnectionManager.ConnectionString;  
            odbcConn = new OdbcConnection(connectionString);  
            odbcConn.Open();  
    
        }  
    
        public override void PreExecute()  
        {  
    
            odbcCmd = new OdbcCommand("INSERT INTO Person.Address2(AddressID, City) " +  
                "VALUES(?, ?)", odbcConn);  
            odbcParam = new OdbcParameter("@addressid", OdbcType.Int);  
            odbcCmd.Parameters.Add(odbcParam);  
            odbcParam = new OdbcParameter("@city", OdbcType.NVarChar, 30);  
            odbcCmd.Parameters.Add(odbcParam);  
    
        }  
    
        public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)  
        {  
    
            {  
                odbcCmd.Parameters["@addressid"].Value = Row.AddressID;  
                odbcCmd.Parameters["@city"].Value = Row.City;  
                odbcCmd.ExecuteNonQuery();  
            }  
    
        }  
    
        public override void ReleaseConnections()  
        {  
    
            odbcConn.Close();  
    
        }  
    }  
    

Vedere anche

Creazione di una destinazione con il componente script