Condividi tramite


IBCPSession::BCPControl (OLE DB)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Download del driver OLE DB

Imposta le opzioni per un'operazione di copia bulk.

Sintassi

  
HRESULT BCPControl(   
      int eOption,  
      void *iValue);  

Osservazioni:

Il metodo BCPControl imposta diversi parametri di controllo per le operazioni di copia bulk, inclusi il numero di errori consentiti prima di annullare una copia bulk, i numeri della prima e dell'ultima riga da copiare da un file di dati e le dimensioni batch.

Questo metodo viene anche usato per specificare l'istruzione SELECT da usare durante la copia bulk di dati da SQL Server. È possibile impostare l'argomento eOption su BCP_OPTION_HINTS e l'argomento iValue in modo che sia presente un puntatore a una stringa di caratteri wide contenente l'istruzione SELECT.

I valori possibili per eOption sono:

Opzione Descrizione
BCP_OPTION_ABORT Arresta un'operazione di copia bulk già in corso. È possibile chiamare il metodo BCPControl con un argomento eOption di BCP_OPTION_ABORT da un altro thread per arrestare un'operazione di copia bulk in esecuzione. L'argomento iValue viene ignorato.
BCP_OPTION_BATCH Numero di righe per batch. L'impostazione predefinita è 0 e indica tutte le righe di una tabella quando i dati vengono estratti oppure tutte le righe nel file di dati dell'utente quando i dati vengono copiati in SQL Server. Un valore minore di 1 consente di reimpostare BCP_OPTION_BATCH sul valore predefinito.
BCP_OPTION_DELAYREADFMT Valore booleano che, se impostato su true, comporta la lettura da parte di IBCPSession::BCPReadFmt al momento dell'esecuzione. Se impostato su false (impostazione predefinita), il file di formato viene letto immediatamente da IBCPSession::BCPReadFmt. Si verificherà un errore di sequenza se BCP_OPTION_DELAYREADFMT è true e si chiama IBCPSession::BCPColumns o IBCPSession::BCPColFmt.

Un errore nella sequenza si verifica anche se si chiama IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)) dopo IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) e IBCPSession::BCPWriteFmt.

Per altre informazioni, vedere Metadata Discovery.
BCP_OPTION_FILECP L'argomento iValue contiene il numero della tabella codici per il file di dati. È possibile specificare il numero della tabella codici, ad esempio 1252 o 850, o uno dei valori seguenti:

BCP_FILECP_ACP: i dati contenuti nel file sono inclusi nella tabella codici di Microsoft Windows® del client.

BCP_FILECP_OEMCP: i dati contenuti nel file sono inclusi nella tabella codici OEM del client (impostazione predefinita).

BCP_FILECP_RAW: i dati contenuti nel file sono inclusi nella tabella codici di SQL Server.
BCP_OPTION_FILEFMT Numero di versione del formato del file di dati. Può essere 80 (SQL Server 2000 (8.x)), 90 (SQL Server 2005 (9.x)), 100 (SQL Server 2008 (10.0.x) o SQL Server 2008 R2 (10.50.x)) o 110 (SQL Server 2012 (11.x)). 110 è l'impostazione predefinita. Questo valore è utile per l'esportazione e l'importazione di dati in formati supportati da una versione precedente del server. Per importare i dati ottenuti, ad esempio, da una colonna di testo di un server SQL Server 2000 (8.x) in una colonna varchar(max) di un server SQL Server 2005 (9.x) o versione successiva, è necessario specificare 80. Analogamente, se si specifica 80 quando si esportano dati da una colonna varchar(max), tali dati vengono salvati esattamente come vengono salvate le colonne di testo nel formato SQL Server 2000 (8.x) e possono essere importati in una colonna di testo di un server SQL Server 2000 (8.x).
BCP_OPTION_FIRST Prima riga di dati del file o della tabella da copiare. Il valore predefinito è 1. Un valore minore di 1 reimposta l'opzione sul valore predefinito.
BCP_OPTION_FIRSTEX Per le operazioni BCP out, specifica la prima riga della tabella di database da copiare nel file di dati.

Per le operazioni BCP in, specifica la prima riga del file di dati da copiare nella tabella di database.

È previsto che il parametro iValue corrisponda all'indirizzo di un numero intero a 64 bit con segno contenente il valore. Il valore massimo che è possibile passare a BCPFIRSTEX è 2^63-1.
BCP_OPTION_FMTXML Specifica che il file di formato generato deve essere in formato XML. L'opzione è disattivata per impostazione predefinita e i file di formato vengono salvati come file di testo. I file di formato XML offrono una maggiore flessibilità ma comportano alcuni vincoli aggiuntivi. Diversamente dai file nei formati precedenti, non è ad esempio possibile specificare contemporaneamente il prefisso e il carattere di terminazione per un campo.

Nota: prima di OLE DB Driver 18.6.0, i file di formato XML erano supportati solo quando venivano installati gli strumenti di SQL Server insieme a OLE DB Driver per SQL Server.
BCP_OPTION_HINTS L'argomento iValue contiene un puntatore alla stringa di caratteri wide. Tale stringa specifica hint di elaborazione della copia bulk di SQL Server o un'istruzione Transact-SQL che restituisce un set di risultati. Se viene specificata un'istruzione Transact-SQL che restituisce più set di risultati, vengono ignorati tutti i set di risultati successivi al primo.
BCP_OPTION_KEEPIDENTITY Quando l'argomento iValue è impostato su TRUE, questa opzione specifica che i metodi di copia bulk inseriscono i valori di dati specificati per le colonne di SQL Server definite con un vincolo di identità. Il file di input deve fornire valori per le colonne di identità. Se questa impostazione non è disponibile, per le righe inserite vengono generati nuovi valori Identity. Eventuali dati presenti nel file per le colonne di identità vengono ignorati.
BCP_OPTION_KEEPNULLS Specifica se i valori di dati vuoti nel file verranno convertiti in valori NULL nella tabella di SQL Server. Quando l'argomento iValue è impostato su TRUE, i valori vuoti verranno convertiti in valori NULL nella tabella di SQL Server. L'impostazione predefinita prevede che i valori vuoti vengano convertiti in un valore predefinito, se presente, per la colonna nella tabella di SQL Server.
BCP_OPTION_LAST Ultima riga da copiare. L'impostazione predefinita consiste nella copia di tutte le righe. Un valore minore di 1 reimposta l'opzione sul valore predefinito.
BCP_OPTION_LASTEX Per le operazioni BCP out, specifica l'ultima riga della tabella di database da copiare nel file di dati.

Per le operazioni BCP in, specifica l'ultima riga del file di dati da copiare nella tabella di database.

È previsto che il parametro iValue corrisponda all'indirizzo di un numero intero a 64 bit con segno contenente il valore. Il valore massimo che è possibile passare a BCPLASTEX è 2^63-1.
BCP_OPTION_MAXERRS Numero massimo di errori consentiti prima che l'operazione di copia bulk non riesca. L'impostazione predefinita è 10. Un valore minore di 1 reimposta l'opzione sul valore predefinito. La copia bulk impone un massimo di 65.535 errori. Il tentativo di impostare questa opzione su un valore maggiore di 65.535 comporta l'impostazione dell'opzione su 65.535.
BCP_OPTION_ROWCOUNT Restituisce il numero di righe interessate dall'ultima operazione BCP o da quella corrente.
BCP_OPTION_TEXTFILE Il file di dati non è un file binario, ma è un file di testo. BCP rileva se il file sia o meno Unicode controllando il marcatore di byte Unicode nei primi due byte del file di dati.
BCP_OPTION_UNICODEFILE Se impostata su TRUE, questa opzione specifica che il file di input utilizza un formato di file Unicode.

Argomenti

eOption[in]
Impostare questo argomento su una delle opzioni elencate nella sezione precedente contenente le osservazioni.

iValue[in]
Valore per l'argomento eOption specificato. L'argomento iValue è un valore integer con cast a un puntatore void per consentire l'espansione futura a valori a 64 bit.

Valori del codice restituito

S_OK
Il metodo è riuscito.

E_FAIL
Si è verificato un errore specifico del provider. Per informazioni dettagliate, usare l'interfaccia ISQLServerErrorInfo.

E_UNEXPECTED
La chiamata al metodo non era prevista. Non è stato ad esempio chiamato il metodo IBCPSession::BCPInit prima della chiamata a questa funzione.

E_OUTOFMEMORY
Errore di memoria insufficiente.

Vedi anche

IBCPSession (OLE DB)
Esecuzione di operazioni di copia bulk