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

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

[!NOTA] L'opzione -V estende la funzionalità dell'opzione -6 utilizzata in Microsoft SQL Server 7.0. L'utilizzo dell'opzione -6 è analogo a quello dell'opzione -V60 o -V65. Sebbene SQL Server supporti ancora l'opzione -6, tale opzione è obsoleta. Pertanto, è consigliabile utilizzare l'opzione -V.

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

Microsoft SQL Server 6.0

-V60

Microsoft SQL Server 6.5

-V65

SQL Server 7.0

-V70

SQL Server 2000

-V80

Interpretazione dei tipi di dati di SQL Server 2005

In SQL Server 2005 è stato aggiunto il supporto per alcuni nuovi tipi di dati. Se si desidera importare un nuovo tipo di dati da SQL Server 2005 in SQL Server 2000 o versioni precedenti, è 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

Quando si esportano in massa i dati da SQL Server 2005 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.

Esportazione da SQL Server 7.0 o versioni precedenti

Quando si esportano in massa i dati da SQL Server 7.0 o versioni precedenti, tenere presente quanto segue:

  • Il formato di archiviazione per i dati bigint esportati da SQL Server 7.0, SQL Server 6.5 o SQL Server 6.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.
  • Per una tabella con colonne char o varchar, durante l'esportazione dei dati in SQL Server 6.0 o SQL Server 6.5, l'utilità bcp aggiunge un prefisso a 1 byte per ogni campo del file di dati equivalente alla lunghezza dei dati. Per una tabella con dati numeric, le informazioni vengono scritte nel file di dati nel formato nativo di SQL Server.
  • In SQL Server 7.0 e in SQL Server 2000, il valore 0 rappresenta una colonna di lunghezza pari a zero.

Esportazione da SQL Server 6.5 o 6.0

Quando si esportano in massa i dati da SQL Server 6.5 o SQL Server 6.0, inoltre, tenere presente quanto segue:

  • In SQL Server 6.5 o versioni precedenti, l'utilità bcp rappresenta i valori Null come valori di lunghezza 0, mentre nell'ultima versione vengono archiviati come valori di lunghezza -1.
  • I valori Null contenuti nelle colonne bit vengono scritti come valori 0 poiché SQL Server 6.5 e le versioni precedenti non supportano dati bit con valori Null.
  • L'utilità bcp non genera i formati di data di SQL Server 6.0 o SQL Server 6.5 per i dati datetime o smalldatetime. Le date vengono sempre scritte in formato ODBC.
  • L'utilizzo dell'opzione -V65 può influire sulle prestazioni a causa dell'overhead necessario per supportare più conversioni di data.
  • I valori dei dati in SQL Server 6.5 o versioni precedenti sono diversi. Per ulteriori informazioni, vedere la sezione seguente "Copia dei valori di data".

Copia dei valori di data

A partire da SQL Server 7.0, l'utilità bcp utilizza l'API per la copia di massa 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...]).

In SQL Server 6.5 o versioni precedenti, invece, l'utilità bcp utilizza l'API per la copia di massa DB-Library e il formato di data DB-Library. Per esportare i formati di data in SQL Server 7.0 e versioni successive da SQL Server 6.5 o versioni precedenti, è necessario utilizzare l'opzione -V65. Se si specifica l'opzione -V65, il comando bcp tenterà innanzitutto di convertire il valore di data nel file di dati utilizzando il formato di data ODBC. Se la conversione non riesce, il comando bcp tenterà di convertire il valore di data utilizzando i formati DB-Library.

Anche se si specifica l'opzione -V65, 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 di massa in un file di dati come stringa di caratteri 1998-08-12 00:00:00.000.

ms191212.note(it-it,SQL.90).gifImportante:
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.

L'utilizzo dell'opzione -V65 può influire sulle prestazioni a causa dell'overhead necessario per supportare più conversioni di data.

Vedere anche

Concetti

Formati di dati per l'importazione o l'esportazione

Altre risorse

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 2005
CAST e CONVERT (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005