Importare dati in formato nativo e carattere da versioni precedenti di SQL Server

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di sistemi analitici (PDW)

In SQL Server 2014 (12.x) e versioni successive, è possibile usare bcp per importare dati in formato nativo e carattere da SQL Server 2000 (8.x), SQL Server 2005 (9.x), SQL Server 2008 (10.0.x), SQL Server 2008 R2 (10.50.x) o SQL Server 2012 (11.x) usando l'opzione -V. Se si usa l'opzione -V, in SQL Server vengono usati tipi di dati della versione precedente specificata di SQL Server e il formato del file di dati corrisponderà al formato della versione precedente in questione.

Per specificare una versione di SQL Server precedente per un file di dati, usare l'opzione -V con uno dei qualificatori seguenti:

Versione di SQL Server Qualifier
SQL Server 2000 (8.x) -V80
SQL Server 2005 (9.x) -V90
SQL Server 2008 (10.0.x) -V100
SQL Server 2012 (11.x) -V 110

Interpretazione dei tipi di dati

SQL Server 2005 (9.x) e versioni successive supportano alcuni nuovi tipi. Se si desidera importare un nuovo tipo di dati in una versione precedente di SQL Server, è necessario archiviarlo in un formato leggibile dai client bcp precedenti. Nella seguente tabella viene riepilogata la modalità di conversione dei nuovi tipi di dati per la compatibilità con le versioni precedenti di SQL Server.

Nuovi tipi di dati in SQL Server 2005 Tipi di dati compatibili nella versione 6x Tipi di dati compatibili nella versione 70 Tipi di dati compatibili nella versione 80
bigint decimal decimal *
sql_variant Testo nvarchar(4000) *
ntext Testo Testo Testo
nvarchar(max) ntext ntext ntext
varbinary(max) Immagine Immagine Immagine
XML ntext ntext ntext
UDT** Immagine Immagine Immagine

*Questo tipo viene supportato a livello nativo.

**UDT indica un tipo definito dall'utente.

Esportazione usando –V 80

Quando si esportano in blocco i dati usando l'opzione -V80, i dati di tipo nvarchar(max), varchar(max), varbinary(max), XML e di tipo definito dall'utente (UDT) in modalità nativa vengono archiviati con un prefisso a 4 byte come i dati text, imagee ntext, anziché con un prefisso a 8 byte che rappresenta l'impostazione predefinita per SQL Server 2005 (9.x) e versioni successive.

Copia dei valori di data

bcp consente di usare l'API della copia bulk ODBC. Quindi, per importare i valori di dati in SQL Server, bcp usa il formato di data ODBC (aaaa-mm-gg hh:mm:ss[.f...]).

Il comando bcp esporterà sempre i file di dati in formato carattere usando il formato predefinito ODBC per i valori datetime e smalldatetime . Ad esempio, per una colonna datetime contenente la data 12 Aug 1998 verrà eseguita la copia bulk in un file di dati come stringa di caratteri 1998-08-12 00:00:00.000.

Importante

Quando si importano i dati in un campo smalldatetime usando il comando bcp, verificare che il valore relativo ai secondi sia 00.000; in caso contrario, l'operazione non riuscirà. Il tipo di dati smalldatetime contiene solo valori approssimati al minuto più vicino. In questa istanza, le istruzioni BULK INSERT e INSERT ... SELECT * FROM OPENROWSET(BULK...) verranno eseguite ma il valore dei secondi verrà troncato.

Attività correlate

Per utilizzare formati di dati per l'importazione o l'esportazione bulk

Vedi anche

Utilità bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Tipi di dati (Transact-SQL)
Compatibilità con le versioni precedenti del motore di database di SQL Server
CAST e CONVERT (Transact-SQL)