Procedura: Utilizzo di una destinazione recordset
La destinazione recordset non salva i dati in un'origine dati esterna, ma in un recordset in memoria archiviato in una variabile del pacchetto 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 utilizzare 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 Business Intelligence Development Studio creare o aprire un pacchetto di Integration Services.
Creare una variabile che conterrà il recordset salvato in memoria dalla destinazione recordset, quindi 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. Quindi, aprire 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 utilizzare 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 AdventureWorks dalla tabella Sales.SalesPerson in una destinazione recordset. 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 BI Development Studio 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 BonusRecordset e impostare il relativo tipo su Object.
La variabile BonusRecordset contiene il recordset.
Creare una variabile denominata EmailAddress e impostare il relativo tipo su String.
La variabile EmailAddress contiene l'indirizzo di posta elettronica del venditore.
Creare una variabile denominata FirstName e impostare il relativo tipo su String.
La variabile FirstName contiene il nome del venditore.
Creare una variabile denominata Bonus e 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 AdventureWorks.
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, quindi aprire Editor origine OLE DB.
Nella pagina Gestione connessione dell'editor configurare l'origine con le impostazioni seguenti:
Per Gestione connessione OLE DB selezionare la gestione connessione OLE DB creata in precedenza.
Per Modalità di accesso ai dati selezionare Comando SQL.
Per Testo comando SQL immettere 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 recordset e 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 Foreach e configurare il contenitore con le impostazioni seguenti:
Nella pagina Raccolta selezionare Enumeratore Foreach ADO per Enumeratore e User::BonusRecordset per 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 messaggi, quindi nella pagina Messaggio configurare l'attività con le impostazioni seguenti:
Per SmtpConnection selezionare la gestione connessione SMTP configurata in precedenza.
Per Da immettere un indirizzo di posta elettronica appropriato.
Se si utilizza il proprio indirizzo di posta elettronica, sarà possibile verificare la corretta esecuzione del pacchetto. Per i messaggi inviati dall'attività Invia messaggi ai venditori fittizi di AdventureWorks si riceveranno notifiche di messaggi non recapitati.
Per A immettere 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 Oggetto immettere"Your annual bonus".
Per MessageSourceType selezionare Input diretto.
Nella pagina Espressioni di Editor attività Invia messaggi fare clic sul pulsante con i puntini di sospensione (...) per aprire Editor espressioni di proprietà.
In Editor espressioni di proprietà immettere le informazioni seguenti:
Per ToLine aggiungere 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 recapitati per i messaggi inviati dall'attività Invia messaggi ai venditori fittizi di AdventureWorks.