Utilizzo di una destinazione recordsetUse a Recordset Destination

La destinazione recordset non salva i dati in un'origine dati esterna,The Recordset destination does not save data to an external data source. ma in un recordset in memoria archiviato in una variabile del pacchetto Integration ServicesIntegration Services del tipo di dati Object .Instead, the Recordset destination saves data in memory in a recordset that is stored in an Integration ServicesIntegration Services package variable of the Object data type. 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.After the Recordset destination saves the data, you typically use a Foreach Loop container with the Foreach ADO enumerator to process one row of the recordset at a time. L'enumeratore Foreach ADO salva il valore di ogni colonna della riga corrente in una variabile del pacchetto distinta.The Foreach ADO enumerator saves the value from each column of the current row into a separate package variable. Quindi, le attività configurate nel contenitore Ciclo Foreach leggono tali valori dalle variabili ed eseguono alcune azioni.Then, the tasks that you configure inside the Foreach Loop container read those values from the variables and perform some action with them.

È possibile utilizzare la destinazione recordset in molti scenari diversi.You can use the Recordset destination in many different scenarios. Di seguito sono riportati alcuni esempi:Here are some examples:

  • È possibile usare un'attività Invia messaggi e il linguaggio delle espressioni di Integration ServicesIntegration Services per inviare un messaggio di posta elettronica personalizzato per ogni riga del recordset.You can use a Send Mail task and the Integration ServicesIntegration Services expression language to send a customized e-mail message for each row in the 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.You can use a Script component configured as a source, inside a Data Flow task, to read the column values into the columns of the data flow. Quindi, è possibile utilizzare trasformazioni e destinazioni per trasformare e salvare la riga.Then, you can use transformations and destinations to transform and save the row. In questo esempio l'attività Flusso di dati viene eseguita una volta per ogni riga.In this example, the Data Flow task runs once for each row.

    Nelle sezioni seguenti viene descritto il processo generale di utilizzo della destinazione recordset e viene quindi illustrato un esempio specifico di utilizzo della destinazione.The following sections first describe the general process of using the Recordset destination and then show a specific example of how to use the destination.

Passaggi generali per l'utilizzo di una destinazione recordsetGeneral Steps to Using a Recordset Destination

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.The following procedure summarizes the steps that are required to save data to a Recordset destination, and then use the Foreach Loop container to process each row.

Per salvare dati in una destinazione recordset ed elaborare ogni riga tramite il contenitore Ciclo ForeachTo save data to a Recordset destination and process each row by using the Foreach Loop container

  1. In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)creare o aprire un pacchetto di Integration ServicesIntegration Services .In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), create or open an Integration ServicesIntegration Services package.

  2. Creare una variabile che conterrà il recordset salvato in memoria dalla destinazione recordset e impostare il relativo tipo su Object.Create a variable that will contain the recordset saved into memory by the Recordset destination, and set the variable's type to Object.

  3. Creare variabili aggiuntive dei tipi appropriati per contenere i valori di ogni colonna del recordset che si desidera utilizzare.Create additional variables of the appropriate types to contain the values of each column in the recordset that you want to use.

  4. Aggiungere e configurare la gestione connessione richiesta dall'origine dati che si intende utilizzare nel flusso di dati.Add and configure the connection manager required by the data source that you plan to use in your data flow.

  5. Aggiungere un'attività Flusso di dati al pacchetto, quindi nella scheda Flusso di dati di Progettazione SSISSSIS configurare le origini e le trasformazioni per il caricamento e la trasformazione dei dati.Add a Data Flow task to the package, and on the Data Flow tab of SSISSSIS Designer, configure sources and transformations to load and transform the data.

  6. Aggiungere una destinazione recordset al flusso di dati e connetterla alle trasformazioni.Add a Recordset destination to the data flow and connect it to the transformations. Per la proprietà VariableName della destinazione recordset, immettere il nome della variabile creata per contenere il recordset.For the VariableName property of the Recordset destination, enter the name of the variable that you created to hold the recordset.

  7. Nella scheda Flusso di controllo di Progettazione SSISSSIS aggiungere un contenitore Ciclo Foreach e connetterlo dopo l'attività Flusso di dati.On the Control Flow tab of SSISSSIS Designer, add a Foreach Loop container and connect this container after the Data Flow task. Aprire quindi Editor ciclo Foreach per configurare il contenitore con le impostazioni seguenti:Then, open the Foreach Loop Editor to configure the container with the following settings:

    1. Nella pagina Raccolta selezionare l'enumeratore Foreach ADO.On the Collection page, select the Foreach ADO Enumerator. Quindi, per Variabile di origine oggetto ADO, selezionare la variabile che contiene il recordset.Then, for ADO object source variable, select the variable that contains the recordset.

    2. Nella pagina Mapping variabili eseguire il mapping dell'indice in base zero di ogni colonna che si desidera usare alla variabile appropriata.On the Variable Mappings page, map the zero-based index of each column that you want to use to the appropriate variable.

      A ogni iterazione del ciclo, l'enumeratore popola queste variabili con i valori delle colonne della riga corrente.On each iteration of the loop, the enumerator populates these variables with the column values from the current row.

  8. Nel contenitore Ciclo Foreach aggiungere e configurare attività per elaborare una riga del recordset alla volta leggendo i valori dalle variabili.Inside the Foreach Loop container, add and configure tasks to process one row of the recordset at a time by reading the values from the variables.

Esempio di utilizzo della destinazione recordsetExample of Using the Recordset Destination

Nell'esempio seguente l'attività Flusso di dati carica informazioni sui dipendenti di AdventureWorks2012AdventureWorks2012 dalla tabella Sales.SalesPerson in una destinazione recordset.In the following example, the Data Flow task loads information about AdventureWorks2012AdventureWorks2012 employees from the Sales.SalesPerson table into a Recordset destination. Quindi, un contenitore Ciclo Foreach legge una riga di dati alla volta e chiama un'attività Invia messaggi.Then, a Foreach Loop container reads one row of data at a time, and calls a Send Mail task. L'attività Invia messaggi utilizza espressioni per inviare un messaggio di posta elettronica personalizzato a ogni venditore sull'importo del premio ricevuto.The Send Mail task uses expressions to send a customized e-mail message to each salesperson about the amount of his or her bonus.

Per creare il progetto e configurare le variabiliTo create the project and configure the variables

  1. In SQL Server Data ToolsSQL Server Data Toolscreare un nuovo progetto di Integration ServicesIntegration Services .In SQL Server Data ToolsSQL Server Data Tools, create a new Integration ServicesIntegration Services project.

  2. Scegliere Variabili dal menu SSIS.On the SSIS menu, select Variables.

  3. Nella finestra Variabili creare le variabili che conterranno il recordset e i valori delle colonne della riga corrente:In the Variables window, create the variables that will hold the recordset and the column values from the current row:

    1. Creare una variabile denominata BonusRecordsete impostare il relativo tipo su Object.Create a variable named, BonusRecordset, and set its type to Object.

      La variabile BonusRecordset contiene il recordset.The BonusRecordset variable holds the recordset.

    2. Creare una variabile denominata EmailAddresse impostare il relativo tipo su String.Create a variable named, EmailAddress, and set its type to String.

      La variabile EmailAddress contiene l'indirizzo di posta elettronica del venditore.The EmailAddress variable holds the salesperson's e-mail address.

    3. Creare una variabile denominata FirstNamee impostare il relativo tipo su String.Create a variable named, FirstName, and set its type to String.

      La variabile FirstName contiene il nome del venditore.The FirstName variable holds the salesperson's first name.

    4. Creare una variabile denominata Bonuse impostare il relativo tipo su Double.Create a variable named, Bonus, and set its type to Double.

      La variabile Bonus contiene l'importo del premio del venditore.The Bonus variable holds the amount of the salesperson's bonus.

Per configurare le gestioni connessioniTo configure the connection managers

  1. Nell'area Gestioni connessioni di Progettazione SSISSSIS aggiungere e configurare una nuova gestione connessione OLE DB che si connette al database di esempio AdventureWorks2012AdventureWorks2012 .In the Connection Managers area of the SSISSSIS Designer, add and configure a new OLE DB connection manager that connects to the AdventureWorks2012AdventureWorks2012 sample database.

    L'origine OLE DB nell'attività Flusso di dati utilizzerà questa gestione connessione per recuperare dati.The OLE DB source in the Data Flow task will use this connection manager to retrieve data.

  2. Nell'area Gestioni connessioni aggiungere e configurare una nuova gestione connessione SMTP che si connette a un server SMTP disponibile.In the Connection Managers area, add and configure a new SMTP connection manager that connects to an available SMTP server.

    L'attività Invia messaggi nel contenitore Ciclo Foreach utilizzerà questa gestione connessione per inviare posta elettronica.The Send Mail task inside the Foreach Loop container will use this connection manager to send emails.

Per configurare il flusso di dati e la destinazione recordsetTo configure the data flow and the Recordset Destination

  1. Nella scheda Flusso di controllo di Progettazione SSISSSIS aggiungere un'attività Flusso di dati nell'area di progettazione.On the Control Flow tab of SSISSSIS Designer, add a Data Flow task to the design surface.

  2. Nella scheda Flusso di dati tab, add an OLE DB source to the Flusso di dati task, and then open the Editor origine OLE DB.On the Data Flow tab, add an OLE DB source to the Data Flow task, and then open the OLE DB Source Editor.

  3. Nella pagina Gestione connessione dell'editor configurare l'origine con le impostazioni seguenti:On the Connection Manager page of the editor, configure the source with the following settings:

    1. Per Gestione connessione OLE DBselezionare la gestione connessione OLE DB creata in precedenza.For OLE DB connection manager, select the OLE DB connection manager that you previously created.

    2. Per Modalità di accesso ai datiselezionare Comando SQL.For Data access mode, select SQL command.

    3. Per Testo comando SQLimmettere la query seguente:For SQL command text, enter the following query:

      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.You have to convert the currency value in the Bonus column to a float before you can load that value into a package variable whose type is Double.

  4. Nella scheda Flusso di dati aggiungere una destinazione recordset e connetterla dopo l'origine OLE DB.On the Data Flow tab, add a Recordset destination, and connect the destination after the OLE DB source.

  5. Aprire l' editor destinazione recordsete configurare la destinazione con le impostazioni seguenti:Open the Recordset Destination Editor, and configure the destination with the following settings:

    1. Nella scheda Proprietà componente selezionare User::BonusRecordset per la proprietà VariableName.On the Component Properties tab, for VariableName property, select User::BonusRecordset.

    2. Nella scheda Colonne di input selezionare tutte e tre le colonne disponibili.On the Input Columns tab, select all three of the available columns.

Per configurare il contenitore Ciclo Foreach ed eseguire il pacchettoTo configure the Foreach Loop container and run the package

  1. Nella scheda Flusso di controllo di Progettazione SSISSSIS aggiungere un contenitore Ciclo Foreach e connetterlo dopo l'attività Flusso di dati.On the Control Flow tab of SSISSSIS Designer, add a Foreach Loop container, and connect the container after the Data Flow task.

  2. Aprire Editor ciclo Foreache configurare il contenitore con le impostazioni seguenti:Open the Foreach Loop Editor, and configure the container with the following settings:

    1. Nella pagina Raccolta selezionare Enumeratore Foreach ADOper Enumeratoree User::BonusRecordsetper Variabile di origine oggetto ADO.On the Collection page, for Enumerator, select Foreach ADO Enumerator, and for ADO object source variable, select User::BonusRecordset.

    2. 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.On the Variable Mappings page, map User::EmailAddress to index 0, User::FirstName to index 1, and User::Bonus to index 2.

  3. Nella scheda Flusso di controllo aggiungere un'attività Invia messaggi nel contenitore Ciclo Foreach.On the Control Flow tab, inside the Foreach Loop container, add a Send Mail task.

  4. Aprire Editor attività Invia messaggie quindi nella pagina Messaggio configurare l'attività con le impostazioni seguenti:Open the Send Mail Task Editor, and then on the Mail page, configure the task with the following settings:

    1. Per SmtpConnectionselezionare la gestione connessione SMTP configurata in precedenza.For SmtpConnection, select the SMTP connection manager that was configured previously.

    2. Per Daimmettere un indirizzo di posta elettronica appropriato.For From, enter an appropriate e-mail address.

      Se si utilizza il proprio indirizzo di posta elettronica, sarà possibile verificare la corretta esecuzione del pacchetto.If you use your own e-mail address, you will be able to confirm that the package runs successfully. Si riceveranno notifiche di messaggi non recapitati per i messaggi inviati dall'attività Invia messaggi ai venditori fittizi di AdventureWorks2012AdventureWorks2012.You will receive undeliverable receipts for the messages sent by the Send Mail task to the fictitious salespersons of AdventureWorks2012AdventureWorks2012.

    3. Per Aimmettere un indirizzo di posta elettronica predefinito.For To, enter a default e-mail address.

      Questo valore non verrà utilizzato ma in fase di esecuzione verrà sostituito con l'indirizzo di posta elettronica di ogni venditore.This value will not be used, but will be replaced at run time by the e-mail address of each salesperson.

    4. Per Oggettoimmettere "Your annual bonus".For Subject, enter "Your annual bonus".

    5. Per MessageSourceTypeselezionare Input diretto.For MessageSourceType, select Direct Input.

  5. Nella pagina Espressioni di Editor attività Invia messaggifare clic sul pulsante con i puntini di sospensione (...) per aprire Editor espressioni di proprietà.On the Expressions page of the Send Mail Task Editor, click the ellipsis button (...) to open the Property Expressions Editor.

  6. In Editor espressioni di proprietàimmettere le informazioni seguenti:In the Property Expressions Editor, enter the following information:

    1. Per ToLineaggiungere l'espressione seguente:For ToLine, add the following expression:

      @[User::EmailAddress]  
      
    2. Per la proprietà MessageSource aggiungere l'espressione seguente:For the MessageSource property, add the following expression:

      "Dear " +  @[User::FirstName] + ": The amount of your bonus for this year is $" +  (DT_WSTR, 12) @[User::Bonus] + ". Thank you!"  
      
  7. Eseguire il pacchetto.Run the package.

    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 AdventureWorks2012AdventureWorks2012.If you have specified a valid SMTP server and provided your own e-mail address, you will receive undeliverable receipts for the messages that the Send Mail task sends to the fictitious salespersons of AdventureWorks2012AdventureWorks2012.