Importieren von Daten aus früheren SQL Server-Versionen im systemeigenen Format oder im Zeichenformat

Sie können den -V-Schalter verwenden, um mit bcp systemeigene Formatdaten und Zeichenformatdaten aus Microsoft SQL Server 2005 oder früheren Versionen zu importieren. Wenn der -V-Schalter angegeben wird, verwendet SQL Server 2008 R2 Datentypen aus früheren Versionen von Microsoft SQL Server. Das Datendateiformat entspricht dann dem der früheren Version.

Um anzugeben, ob sich die Datendatei auf der Ebene einer früheren Version von SQL Server befindet, verwenden Sie den -V-Schalter wie folgt:

SQL Server-Version

Qualifizierer

SQL Server 7.0

-V70

SQL Server 2000

-V80

SQL Server 2005

-V90

Interpretation von SQL Server-Datentypen

SQL Server 2005 und höhere Versionen bieten Unterstützung für einige neue Typen. Beim Importieren eines neuen Datentyps aus einer früheren Version, muss der Dateityp in einem Format gespeichert sein, das von den älteren bcp-Clients gelesen werden kann. In der folgenden Tabelle finden Sie eine Zusammenfassung über die Konvertierung der neuen Datentypen von SQL Server 2005 für die Kompatibilität mit früheren SQL Server-Versionen.

Neue Datentypen in SQL Server 2005

Kompatible Datentypen in Version 6x

Kompatible Datentypen in Version 70

Kompatible Datentypen in Version 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

* Dieser Typ wird vom eigenen System unterstützt.

1 UDT gibt einen benutzerdefinierten Typ an.

Exportieren aus SQL Server 2005 und höheren Versionen

Bei einem Massenexport von Daten aus SQL Server 2005 oder höheren Versionen mithilfe des –V80-Schalters werden Daten vom Typ nvarchar(max), varchar(max), varbinary(max), XML und UDT – wie Daten vom Typ text, image, and ntext – anstatt mit einem 8-Byte-Präfix mit einem 4-Byte-Präfix im systemeigenen Format gespeichert. Dies ist der Standardwert für SQL Server 2005 und höhere Versionen.

Exportieren aus SQL Server 7.0 oder SQL Server 2000

Beim Massenexport von Daten aus SQL Server 7.0 oder SQL Server 2000 müssen Sie Folgendes berücksichtigen:

  • In SQL Server 7.0 und SQL Server 2000 stellt der Wert 0 eine Spalte der Länge Null dar.

  • Das Speicherformat für bigint-Daten, die aus SQL Server 7.0 exportiert wurden, hängt vom Datenformat der Datendatei ab:

    • Bei einer Datendatei im systemeigenen Format oder im systemeigenen Unicode-Format werden bigint-Daten als Daten des Typs decimal(19,0) gespeichert.

    • Bei einer Datendatei im Zeichenmodus oder im Unicode-Zeichenmodus werden bigint-Daten als Zeichenfolge oder als Unicode-Zeichenfolge [-]digits gespeichert (z. B. –25688904432).

Kopieren von Datumswerten

Seit SQL Server 7.0 verwendet bcp die ODBC-API für das Massenkopieren. Deshalb verwendet bcp zum Importieren von Datumswerten in SQL Server 7.0 oder höher das ODBC-Datumsformat (yyyy-mm-dd hh:mm:ss[.f...]).

Der Befehl bcp exportiert Datendateien im Zeichenformat immer mithilfe des ODBC-Standardformats für datetime- und smalldatetime-Werte. So wird beispielsweise eine datetime-Spalte mit dem Datum 12 Aug 1998 beim Massenkopieren in eine Datendatei als die Zeichenfolge 1998-08-12 00:00:00.000 übertragen.

Wichtiger HinweisWichtig

Achten Sie beim Importieren von Daten mit bcp in ein smalldatetime-Feld darauf, dass der Wert für Sekunden 00.000 ist; andernfalls erzeugt der Vorgang einen Fehler. Der smalldatetime-Datentyp kann nur Werte beinhalten, die auf die volle Minute gerundet sind. BULK INSERT und INSERT ... SELECT * FROM OPENROWSET(BULK...) schlagen in diesem Fall nicht fehl, schneiden jedoch den Sekundenwert ab.