Usare una destinazione recordset
Si applica a: SQL Server SSIS Integration Runtime in Azure Data Factory
La destinazione recordset non salva i dati in un'origine dati esterna, ma in un recordset in memoria archiviato in una variabile del pacchetto di Integration Services del tipo di dati Object. Dopo che la destinazione recordset ha salvato i dati, in genere si utilizza un contenitore Ciclo Foreach con l'enumeratore Foreach ADO per elaborare una riga del recordset alla volta. L'enumeratore Foreach ADO salva il valore di ogni colonna della riga corrente in una variabile del pacchetto distinta. Quindi, le attività configurate nel contenitore Ciclo Foreach leggono tali valori dalle variabili ed eseguono alcune azioni.
È possibile utilizzare la destinazione recordset in molti scenari diversi. Di seguito sono riportati alcuni esempi.
È possibile usare un'attività Invia messaggi e il linguaggio delle espressioni di Integration Services per inviare un messaggio di posta elettronica personalizzato per ogni riga del recordset.
È possibile utilizzare un componente script configurato come origine, all'interno di un'attività Flusso di dati, per leggere i valori delle colonne del flusso di dati. Quindi, è possibile utilizzare trasformazioni e destinazioni per trasformare e salvare la riga. In questo esempio l'attività Flusso di dati viene eseguita una volta per ogni riga.
Nelle sezioni seguenti viene descritto il processo generale di utilizzo della destinazione recordset e viene quindi illustrato un esempio specifico di utilizzo della destinazione.
Passaggi generali per l'utilizzo di una destinazione recordset
Nella procedura seguente sono riepilogati i passaggi necessari per salvare dati in una destinazione recordset e quindi utilizzare il contenitore Ciclo Foreach per elaborare ogni riga.
Per salvare dati in una destinazione recordset ed elaborare ogni riga tramite il contenitore Ciclo Foreach
In SQL Server Data Tools (SSDT) creare o aprire un pacchetto di Integration Services.
Creare una variabile che conterrà il recordset salvato in memoria dalla destinazione recordset e impostare il relativo tipo su Object.
Creare variabili aggiuntive dei tipi appropriati per contenere i valori di ogni colonna del recordset che si desidera utilizzare.
Aggiungere e configurare la gestione connessione richiesta dall'origine dati che si intende utilizzare nel flusso di dati.
Aggiungere un'attività Flusso di dati al pacchetto, quindi nella scheda Flusso di dati di Progettazione SSIS configurare le origini e le trasformazioni per il caricamento e la trasformazione dei dati.
Aggiungere una destinazione recordset al flusso di dati e connetterla alle trasformazioni. Per la proprietà VariableName della destinazione recordset, immettere il nome della variabile creata per contenere il recordset.
Nella scheda Flusso di controllo di Progettazione SSIS aggiungere un contenitore Ciclo Foreach e connetterlo dopo l'attività Flusso di dati. Aprire quindi Editor ciclo Foreach per configurare il contenitore con le impostazioni seguenti:
Nella pagina Raccolta selezionare l'enumeratore Foreach ADO. Quindi, per Variabile di origine oggetto ADO, selezionare la variabile che contiene il recordset.
Nella pagina Mapping variabili eseguire il mapping dell'indice in base zero di ogni colonna che si desidera usare alla variabile appropriata.
A ogni iterazione del ciclo, l'enumeratore popola queste variabili con i valori delle colonne della riga corrente.
Nel contenitore Ciclo Foreach aggiungere e configurare attività per elaborare una riga del recordset alla volta leggendo i valori dalle variabili.
Esempio di utilizzo della destinazione recordset
Nell'esempio seguente l'attività Flusso di dati carica informazioni sui dipendenti di AdventureWorks2022 dalla tabella Sales.SalesPerson in una destinazione del set di record. Quindi, un contenitore Ciclo Foreach legge una riga di dati alla volta e chiama un'attività Invia messaggi. L'attività Invia messaggi utilizza espressioni per inviare un messaggio di posta elettronica personalizzato a ogni venditore sull'importo del premio ricevuto.
Per creare il progetto e configurare le variabili
In SQL Server Data Tools creare un nuovo progetto di Integration Services.
Scegliere Variabili dal menu SSIS.
Nella finestra Variabili creare le variabili che conterranno il recordset e i valori delle colonne della riga corrente:
Creare una variabile denominata BonusRecordsete impostare il relativo tipo su Object.
La variabile BonusRecordset contiene il recordset.
Creare una variabile denominata EmailAddresse impostare il relativo tipo su String.
La variabile EmailAddress contiene l'indirizzo di posta elettronica del venditore.
Creare una variabile denominata FirstNamee impostare il relativo tipo su String.
La variabile FirstName contiene il nome del venditore.
Creare una variabile denominata Bonuse impostare il relativo tipo su Double.
La variabile Bonus contiene l'importo del premio del venditore.
Per configurare le gestioni connessioni
Nell'area Gestioni connessioni di Progettazione SSIS aggiungere e configurare una nuova gestione connessione OLE DB che si connette al database di esempio AdventureWorks2022.
L'origine OLE DB nell'attività Flusso di dati utilizzerà questa gestione connessione per recuperare dati.
Nell'area Gestioni connessioni aggiungere e configurare una nuova gestione connessione SMTP che si connette a un server SMTP disponibile.
L'attività Invia messaggi nel contenitore Ciclo Foreach utilizzerà questa gestione connessione per inviare posta elettronica.
Per configurare il flusso di dati e la destinazione recordset
Nella scheda Flusso di controllo di Progettazione SSIS aggiungere un'attività Flusso di dati nell'area di progettazione.
Nella scheda Flusso di dati aggiungere un'origine OLE DB all'attività Flusso di dati e quindi aprire Editor origine OLE DB.
Nella pagina Gestione connessione dell'editor configurare l'origine con le impostazioni seguenti:
Per Gestione connessione OLE DBselezionare la gestione connessione OLE DB creata in precedenza.
Per Modalità di accesso ai datiselezionare Comando SQL.
Per Testo comando SQLimmettere la query seguente:
SELECT Person.Contact.EmailAddress, Person.Contact.FirstName, CONVERT(float, Sales.SalesPerson.Bonus) AS Bonus FROM Sales.SalesPerson INNER JOIN Person.Contact ON Sales.SalesPerson.SalesPersonID = Person.Contact.ContactID
Nota
È necessario convertire il valore currency nella colonna Bonus in float prima che sia possibile caricare tale valore in una variabile del pacchetto il cui tipo è Double.
Nella scheda Flusso di dati aggiungere una destinazione recordset e connetterla dopo l'origine OLE DB.
Aprire l' editor destinazione recordsete configurare la destinazione con le impostazioni seguenti:
Nella scheda Proprietà componente selezionare User::BonusRecordset per la proprietà VariableName.
Nella scheda Colonne di input selezionare tutte e tre le colonne disponibili.
Per configurare il contenitore Ciclo Foreach ed eseguire il pacchetto
Nella scheda Flusso di controllo di Progettazione SSIS aggiungere un contenitore Ciclo Foreach e connetterlo dopo l'attività Flusso di dati.
Aprire Editor ciclo Foreache configurare il contenitore con le impostazioni seguenti:
Nella pagina Raccolta selezionare Enumeratore Foreach ADOper Enumeratoree User::BonusRecordsetper Variabile di origine oggetto ADO.
Nella pagina Mapping variabili eseguire il mapping di User::EmailAddress all'indice 0, di User::FirstName all'indice 1 e di User::Bonus all'indice 2.
Nella scheda Flusso di controllo aggiungere un'attività Invia messaggi nel contenitore Ciclo Foreach.
Aprire Editor attività Invia messaggie quindi nella pagina Messaggio configurare l'attività con le impostazioni seguenti:
Per SmtpConnectionselezionare la gestione connessione SMTP configurata in precedenza.
Per Daimmettere un indirizzo di posta elettronica appropriato.
Se si utilizza il proprio indirizzo di posta elettronica, sarà possibile verificare la corretta esecuzione del pacchetto. Si riceveranno notifiche di messaggi non recapitabili per i messaggi inviati dall’attività Invia messaggi ai venditori fittizi di AdventureWorks2022.
Per Aimmettere un indirizzo di posta elettronica predefinito.
Questo valore non verrà utilizzato ma in fase di esecuzione verrà sostituito con l'indirizzo di posta elettronica di ogni venditore.
Per Oggettoimmettere "Your annual bonus".
Per MessageSourceTypeselezionare Input diretto.
Nella pagina Espressioni di Editor attività Invia messaggifare clic sul pulsante con i puntini di sospensione (...) per aprire Editor espressioni di proprietà.
In Editor espressioni di proprietàimmettere le informazioni seguenti:
Per ToLineaggiungere l'espressione seguente:
@[User::EmailAddress]
Per la proprietà MessageSource aggiungere l'espressione seguente:
"Dear " + @[User::FirstName] + ": The amount of your bonus for this year is $" + (DT_WSTR, 12) @[User::Bonus] + ". Thank you!"
Eseguire il pacchetto.
Se è stato specificato un server SMTP valido ed è stato fornito il proprio indirizzo di posta elettronica, si riceveranno notifiche di messaggi non recapitabili per i messaggi inviati dall’attività Invia messaggi ai venditori fittizi di AdventureWorks2022.