Inserimento bulk - attivitàBulk Insert Task

L'attività Inserimento bulk rappresenta un modo efficiente per copiare grandi quantità di dati in una tabella o in una vista di SQL ServerSQL Server .The Bulk Insert task provides an efficient way to copy large amounts of data into a SQL ServerSQL Server table or view. Si supponga, ad esempio, che nella propria società venga usato un mainframe per archiviare l'elenco prodotti, che include un milione di righe, ma che il sistema e-commerce dell'azienda usi SQL ServerSQL Server per popolare le pagine Web.For example, suppose your company stores its million-row product list on a mainframe system, but the company's e-commerce system uses SQL ServerSQL Server to populate Web pages. È necessario aggiornare la tabella di SQL ServerSQL Server dei prodotti durante la notte utilizzando l'elenco master dei prodotti del mainframe.You must update the SQL ServerSQL Server product table nightly with the master product list from the mainframe. A tale scopo è possibile salvare l'elenco prodotti in un file delimitato da tabulazione e utilizzare l'attività Inserimento bulk per copiare i dati direttamente nella tabella di SQL ServerSQL Server .To update the table, you save the product list in a tab-delimited format and use the Bulk Insert task to copy the data directly into the SQL ServerSQL Server table.

Per garantire la massima velocità di copia, non è consentito eseguire trasformazioni durante lo spostamento dei dati dal file di origine alla tabella o alla vista.To ensure high-speed data copying, transformations cannot be performed on the data while it is moving from the source file to the table or view.

Considerazioni sull'utilizzoUsage Considerations

Prima di utilizzare l'attività Inserimento bulk, considerare gli aspetti seguenti:Before you use the Bulk Insert task, consider the following:

  • Con l'attività Inserimento bulk i dati possono essere trasferiti solo da un file di testo a una tabella o a una vista di SQL ServerSQL Server .The Bulk Insert task can transfer data only from a text file into a SQL ServerSQL Server table or view. Per usare l'attività Inserimento bulk per trasferire dati da altri sistemi di gestione di database (DBMS, Database Management System), è necessario esportare i dati dall'origine a un file di testo e quindi importarli dal file di testo a una tabella o vista di SQL ServerSQL Server .To use the Bulk Insert task to transfer data from other database management systems (DBMSs), you must export the data from the source to a text file and then import the data from the text file into a SQL ServerSQL Server table or view.

  • La destinazione deve essere una tabella o vista di database di SQL ServerSQL Server .The destination must be a table or view in a SQL ServerSQL Server database. Se nella tabella o vista di destinazione sono già presenti dati, durante l'esecuzione dell'attività Inserimento bulk i nuovi dati verranno aggiunti a quelli esistenti.If the destination table or view already contains data, the new data is appended to the existing data when the Bulk Insert task runs. Se si desidera sostituire i dati, prima dell'attività Inserimento bulk avviare un'attività Esegui SQL che esegue un'istruzione DELETE o TRUNCATE.If you want to replace the data, run an Execute SQL task that runs a DELETE or TRUNCATE statement before you run the Bulk Insert task. Per altre informazioni, vedere Attività Esegui SQL.For more information, see Execute SQL Task.

  • Nell'oggetto attività Inserimento bulk è possibile utilizzare un file di formato.You can use a format file in the Bulk Insert task object. Se il file di formato è stato creato dall'utilità bcp , è possibile specificarne il percorso nell'attività Inserimento bulk.If you have a format file that was created by the bcp utility, you can specify its path in the Bulk Insert task. L'attività Inserimento bulk supporta file di formato sia XML che non XML.The Bulk Insert task supports both XML and nonXML format files. Per altre informazioni sui file di formato, vedere File di formato per l'importazione o l'esportazione di dati (SQL Server).For more information about format files, see Format Files for Importing or Exporting Data (SQL Server).

  • I pacchetti che contengono attività Inserimento bulk possono essere eseguiti solo dai membri del ruolo predefinito del server sysadmin.Only members of the sysadmin fixed server role can run a package that contains a Bulk Insert task.

Attività Inserimento bulk con le transazioniBulk Insert Task with Transactions

Se le dimensioni del batch non sono impostate, l'intera operazione di copia bulk verrà considerata come un'unica transazione.If a batch size is not set, the complete bulk copy operation is treated as one transaction. Se il valore delle dimensioni del batch è 0 , i dati verranno inseriti in un solo batch.A batch size of 0 indicates that the data is inserted in one batch. Se le dimensioni del batch sono impostate, ogni batch rappresenterà una transazione di cui verrà eseguito il commit alla fine dell'esecuzione.If a batch size is set, each batch represents a transaction that is committed when the batch finishes running.

Il comportamento dell'attività Inserimento bulk in relazione alle transazioni varia a seconda che l'attività partecipi o meno alla transazione del pacchetto.The behavior of the Bulk Insert task, as it relates to transactions, depends on whether the task joins the package transaction. Se l'attività Inserimento bulk non partecipa alla transazione del pacchetto, per ogni batch privo di errori verrà eseguito il commit prima di procedere con il batch successivo.If the Bulk Insert task does not join the package transaction, each error-free batch is committed as a unit before the next batch is tried. Se l'attività Inserimento bulk partecipa alla transazione, al termine dell'attività i batch privi di errori rimarranno nella transazioneIf the Bulk Insert task joins the package transaction, error-free batches remain in the transaction at the conclusion of the task. e saranno soggetti alle operazioni di commit o di rollback del pacchetto.These batches are subject to the commit or rollback operation of the package.

In caso di errore nell'attività Inserimento bulk, i batch già caricati non verranno sottoposti automaticamente a rollback. Analogamente l'esito positivo dell'attività non comporta automaticamente l'esecuzione del commit per tali batch.A failure in the Bulk Insert task does not automatically roll back successfully loaded batches; similarly, if the task succeeds, batches are not automatically committed. Le operazioni di commit e di rollback vengono eseguite solo se le proprietà del flusso di lavoro o del pacchetto sono state impostate in questo senso.Commit and rollback operations occur only in response to package and workflow property settings.

Origine e destinazioneSource and Destination

Quando si specifica il percorso del file di testo di origine, prendere in considerazione i fattori seguenti:When you specify the location of the text source file, consider the following:

  • Il server deve disporre delle autorizzazioni necessarie per accedere sia al file che al database di destinazione.The server must have permission to access both the file and the destination database.

  • Poiché l'attività Inserimento bulk viene eseguita dal server,The server runs the Bulk Insert task. tutti i file di formato utilizzati dall'attività devono trovarsi sul server.Therefore, any format file that the task uses must be located on the server.

  • Il file di origine caricato dall'attività Inserimento bulk può trovarsi sullo stesso server del database di SQL ServerSQL Server in cui vengono inseriti i dati oppure su un server remoto.The source file that the Bulk Insert task loads can be on the same server as the SQL ServerSQL Server database into which data is inserted, or on a remote server. Se il file si trova in un server remoto, è necessario specificarne il percorso in formato UNC (Universal Naming Convention).If the file is on a remote server, you must specify the file name using the Universal Naming Convention (UNC) name in the path.

Ottimizzazione delle prestazioniPerformance Optimization

Per ottimizzare le prestazioni, prendere in considerazione i fattori seguenti:To optimize performance, consider the following:

  • Se il file di testo si trova nello stesso computer del database di SQL ServerSQL Server in cui vengono inseriti i dati, l'operazione di copia avviene a una velocità superiore, in quanto i dati non devono essere trasferiti in rete.If the text file is located on the same computer as the SQL ServerSQL Server database into which data is inserted, the copy operation occurs at an even faster rate because the data is not moved over the network.

  • L'attività Inserimento bulk non registra le righe che determinano errori.The Bulk Insert task does not log error-causing rows. Se è necessario acquisire tali informazioni, utilizzare gli output degli errori dei componenti flusso di dati per registrare in un file di eccezioni le righe che provocano errori.If you must capture this information, use the error outputs of data flow components to capture error-causing rows in an exception file.

Voci di log personalizzate disponibili nell'attività Inserimento bulkCustom Log Entries Available on the Bulk Insert Task

Nella tabella seguente sono elencate le voci di log personalizzate disponibili per l'attività Inserimento bulk.The following table lists the custom log entries for the Bulk Insert task. Per altre informazioni, vedere registrazione di Integration Services (SSIS).For more information, see Integration Services (SSIS) Logging.

Voce di logLog entry DescriptionDescription
BulkInsertTaskBeginBulkInsertTaskBegin Indica che l'inserimento bulk è iniziato.Indicates that the bulk insert began.
BulkInsertTaskEndBulkInsertTaskEnd Indica che l'inserimento bulk è terminato.Indicates that the bulk insert finished.
BulkInsertTaskInfosBulkInsertTaskInfos Offre informazioni descrittive sull'attività.Provides descriptive information about the task.

Configurazione dell'attività Inserimento bulkBulk Insert Task Configuration

Per configurare l'attività Inserimento bulk, procedere nel modo seguente:You can configure the Bulk Insert task in the following ways:

  • Specificare la gestione connessione OLE DB da usare per la connessione al database SQL ServerSQL Server di destinazione e la tabella o la vista in cui inserire i dati.Specify the OLE DB connection manager to connect to the destination SQL ServerSQL Server database and the table or view into which data is inserted. L'attività Inserimento bulk supporta solo le connessioni OLE DB per il database di destinazione.The Bulk Insert task supports only OLE DB connections for the destination database.

  • Specificare la gestione connessione file o file flat da utilizzare per accedere al file di origine.Specify the File or Flat File connection manager to access the source file. L'attività Inserimento bulk utilizza la gestione connessione solo per il percorso del file di origine.The Bulk Insert task uses the connection manager only for the location of the source file. L'attività ignora le altre opzioni selezionate nell'editor gestione connessione.The task ignores other options that you select in the connection manager editor.

  • Definire il formato utilizzato dall'attività Inserimento bulk, utilizzando un file di formato o definendo i delimitatori di colonna e di riga dei dati di origine.Define the format that is used by the Bulk Insert task, either by using a format file or by defining the column and row delimiters of the source data. Se si utilizza un file di formato, specificare la gestione connessione file da utilizzare per accedere a tale file.If using a format file, specify the File connection manager to access the format file.

  • Specificare le azioni da eseguire nella tabella o nella vista di destinazione quando i dati vengono inseriti dall'attività.Specify actions to perform on the destination table or view when the task inserts the data. È possibile specificare se verificare i vincoli, abilitare IDENTITY_INSERT, mantenere i valori Null, attivare trigger o bloccare la tabella.The options include whether to check constraints, enable identity inserts, keep nulls, fire triggers, or lock the table.

  • Fornire informazioni sul batch di dati da inserire, ad esempio le dimensioni del batch, la prima e l'ultima riga del file da inserire, il numero massimo di errori oltre il quale arrestare l'inserimento delle righe e i nomi delle colonne che verranno ordinate.Provide information about the batch of data to insert, such as the batch size, the first and last row from the file to insert, the number of insert errors that can occur before the task stops inserting rows, and the names of the columns that will be sorted.

    Se l'attività Inserimento bulk utilizza una gestione connessione file flat per accedere al file di origine, invece del formato specificato nella gestione connessione file flatIf the Bulk Insert task uses a Flat File connection manager to access the source file, the task does not use the format specified in the Flat File connection manager. usa il formato specificato in un file di formato o i valori delle proprietà RowDelimiter e ColumnDelimiter dell'attività.Instead, the Bulk Insert task uses either the format specified in a format file, or the values of the RowDelimiter and ColumnDelimiter properties of the task.

    È possibile impostare le proprietà tramite Progettazione SSISSSIS o a livello di codice.You can set properties through SSISSSIS Designer or programmatically.

    Per ulteriori informazioni sulle proprietà che è possibile impostare in Progettazione SSISSSIS , fare clic su uno degli argomenti seguenti:For more information about the properties that you can set in SSISSSIS Designer, click one of the following topics:

  • Editor attività Inserimento bulk (pagina Generale)Bulk Insert Task Editor (General Page)

  • Editor attività Inserimento bulk (Pagina Connessione)Bulk Insert Task Editor (Connection Page)

  • Editor attività Inserimento bulk (pagina Opzioni)Bulk Insert Task Editor (Options Page)

  • Pagina EspressioniExpressions Page

    Per altre informazioni sull'impostazione di queste proprietà in Progettazione SSISSSIS , fare clic sull'argomento seguente:For more information about how to setthese properties in SSISSSIS Designer, click the following topic:

  • Impostazione delle proprietà di un'attività o di un contenitoreSet the Properties of a Task or Container

Configurazione a livello di codice dell'attività Inserimento bulkProgrammatic Configuration of the Bulk Insert Task

Per ulteriori informazioni sull'impostazione di queste proprietà a livello di codice, fare clic sull'argomento seguente:For more information about programmatically setting these properties, click the following topic:

Impostare le proprietà di un'attività o di un contenitoreSet the Properties of a Task or Container