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

Per importare dati in formato nativo e carattere da MicrosoftSQL Server 2005 o versioni precedenti mediante l'utilità bcp, utilizzare l'opzione -V. Quando si specifica l'opzione -V, MicrosoftSQL Server 2008 utilizza i tipi di dati e il formato del file di dati di una delle versioni precedenti di MicrosoftSQL Server.

Per specificare il livello di una versione precedente di SQL Server per il file di dati, utilizzare l'opzione -V come illustrato di seguito:

Versione di SQL Server

Qualificatore

SQL Server 7.0

-V70

SQL Server 2000

-V80

SQL Server 2005

-V90

Interpretazione dei tipi di dati di SQL Server

SQL Server 2005 e versioni successive supporta alcuni nuovi tipi. Se si desidera importare un nuovo tipo di dati in una versione precedente, è necessario archiviarlo in un formato leggibile dai client bcp precedenti. Nella tabella seguente sono indicate le conversioni dei nuovi tipi di dati SQL Server 2005 necessarie per assicurare 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

text

nvarchar(4000)

*

varchar(max)

text

text

text

nvarchar(max)

ntext

ntext

ntext

varbinary(max)

image

image

image

XML

ntext

ntext

ntext

UDT1

image

image

image

* Questo tipo viene supportato a livello nativo.

UDT 1 indica un tipo definito dall'utente.

Esportazione da SQL Server 2005 e versioni successive

Quando si esegue l'esportazione bulk di dati da SQL Server 2005 o versioni successive mediante l'opzione –V80, i dati nvarchar(max), varchar(max), varbinary(max), XML e UDT in modalità nativa vengono archiviati con un prefisso a 4 byte come i dati text, image e ntext, anziché con un prefisso a 8 byte che rappresenta l'impostazione predefinita per SQL Server 2005 e versioni successive.

Esportazione da SQL Server 7.0 o SQL Server 2000

Quando si esegue l'esportazione bulk di dati da SQL Server 7.0 o SQL Server 2000, tenere presente quanto segue:

  • In SQL Server 7.0 e in SQL Server 2000, il valore 0 rappresenta una colonna di lunghezza pari a zero.

  • Il formato di archiviazione per i dati bigint esportati da SQL Server 7.0 dipende dal formato del file di dati:

    • In un file di dati in modalità nativa o in formato nativo Unicode, i dati bigint vengono archiviati come decimal(19,0).

    • In un file di dati in modalità carattere o in formato carattere Unicode, i dati bigint vengono archiviati come stringa di caratteri o stringa Unicode costituita da [-digits, ad esempio –25688904432.

Copia dei valori di data

A partire da SQL Server 7.0, l'utilità bcp utilizza l'API per la copia bulk ODBC. Pertanto, per importare i valori di dati in SQL Server 7.0 o versioni sucessive, bcp utilizza il formato di data ODBC (yyyy-mm-dd hh:mm:ss[.f...]).

Il comando bcp esporterà sempre i file di dati in formato carattere utilizzando 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.

Nota importanteImportante

Quando si importano i dati in un campo smalldatetime utilizzando 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.