Condividi tramite


Procedura: Copia bulk di dati mediante IRowsetFastLoad (OLE DB)

Il consumer notifica a SQLOLEDB la necessità di eseguire una copia bulk impostando su VARIANT_TRUE la proprietà SSPROP_ENABLEFASTLOAD specifica del provider SQLOLEDB. Con la proprietà impostata sull'origine dati, il consumer crea una sessione di SQLOLEDB. La nuova sessione consente al consumer di accedere a IRowsetFastLoad.

In un esempio completo viene illustrato l'utilizzo di IRowsetFastLoad per eseguire una copia bulk dei record in una tabella. In questo esempio vengono aggiunti 10 record alla tabella IRFLTable. È necessario creare la tabella IRFLTable nel database.

Il codice di esempio completo si trova nel file BulkCopyRecords.cpp. È possibile scaricare un archivio contenente l'esempio dalla pagina SQL Server Downloads su MSDN.

L'esempio è stato sviluppato utilizzando Microsoft Visual C++ 2005.

Nota sulla sicurezzaNota sulla sicurezza

Se possibile, utilizzare l'autenticazione di Windows. Se non è disponibile, verrà richiesto agli utenti di immettere le credenziali in fase di esecuzione. Evitare di archiviare le credenziali in un file. Se è necessario rendere persistenti le credenziali, è consigliabile crittografarle utilizzando CryptoAPI Win32.

Per eseguire la copia bulk dei dati in una tabella di SQL Server

  1. Stabilire una connessione all'origine dati.

  2. Impostare su VARIANT_TRUE la proprietà SSPROP_ENABLEFASTLOAD dell'origine dati specifica del provider SQLOLEDB. Grazie a questa impostazione, la sessione appena creata consente al consumer di accedere a IRowsetFastLoad.

  3. Creare una sessione che richiede l'interfaccia IOpenRowset.

  4. Chiamare IOpenRowset::OpenRowset per aprire un set di righe che include tutte le righe della tabella (in cui devono essere copiati i dati utilizzando l'operazione di copia bulk).

  5. Effettuare le associazioni necessarie e creare una funzione di accesso utilizzando IAccessor::CreateAccessor.

  6. Configurare il buffer della memoria dal quale verranno copiati i dati nella tabella.

  7. Chiamare IRowsetFastLoad::InsertRow per eseguire la copia bulk dei dati nella tabella.