Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

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 2000 oder früher zu importieren. Wenn der -V-Schalter angegeben wird, verwendet Microsoft SQL Server 2005 Datentypen aus früheren Versionen von Microsoft SQL Server. Das Datendateiformat entspricht dann dem der früheren Version.

ms191212.note(de-de,SQL.90).gifHinweis:
Der -V-Schalter erweitert die Funktionalität des -6-Schalters, der in Microsoft SQL Server 7.0 verwendet wird. Sie können anstelle von -6 auch -V 60 oder -V 65 verwenden. Obwohl SQL Server weiterhin den -6-Schalter unterstützt, ist er als veraltet markiert. Deshalb wird die Verwendung des -V-Schalters empfohlen.

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

Microsoft SQL Server 6.0

-V 60

Microsoft SQL Server 6.5

-V 65

SQL Server 7.0

-V 70

SQL Server 2000

-V 80

SQL Server 2005 unterstützt einige neue Datentypen. Beim Importieren eines neuen Datentyps aus SQL Server 2005 in SQL Server 2000 oder früher muss dieser 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.

Bei einem Massenexport von Daten aus SQL Server 2005 mithilfe des –V 80-Schalters werden Daten vom Typ nvarchar(max), varchar(max), varbinary(max), XML und UDT – wie Daten vom Typ text, image und 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.

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

  • Das Speicherformat für bigint-Daten, die aus SQL Server 7.0, aus SQL Server 6.5 oder aus SQL Server 6.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).
  • Beim Datenexport in SQL Server 6.0 oder in SQL Server 6.5 fügt bcp für eine Tabelle mit char- oder varchar-Spalten ein 1-Byte-Präfix für jedes Datendateifeld hinzu, das der Länge der Daten entspricht. In einer Tabelle mit numeric-Daten werden die Informationen in die Datendatei im systemeigenen SQL Server-Format geschrieben.
  • In SQL Server 7.0 und SQL Server 2000 stellt der Wert 0 eine Spalte der Länge Null dar.

Des Weiteren sollten Sie beim Massenexport von Daten aus SQL Server 6.5 oder SQL Server 6.0 Folgendes berücksichtigen:

  • In SQL Server 6.5 oder früher stellte bcp NULL-Werte als einen Längenwert von 0 dar, während Null nun als der Längenwert -1 gespeichert wird.
  • Jeder NULL-Wert in einer bit-Spalte wird als 0 geschrieben, weil SQL Server 6.5 oder eine frühere Version für bit-Daten den NULL-Wert nicht unterstützt.
  • Das Dienstprogramm bcp generiert für datetime- oder smalldatetime-Daten keine SQL Server 6.0- oder SQL Server 6.5-Datumsformate. Daten werden immer im ODBC-Format geschrieben.
  • Die Verwendung des -V 65-Schalters kann aufgrund des Aufwands, der zur Unterstützung mehrerer Datumskonvertierungen erforderlich ist, die Leistung beeinträchtigen.
  • Die Datumswerte in SQL Server 6.5 oder in früheren Versionen unterscheiden sich. Weitere Informationen finden Sie im folgenden Abschnitt "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...]).

In SQL Server 6.5 oder früher verwendet bcp hingegen die DB-Library-API für das Massenkopieren und das Datumsformat von DB-Library. Verwenden Sie den -V 65-Schalter, um Datumsformate aus SQL Server 6.5 oder früher nach SQL Server 7.0 oder höher zu exportieren. Wenn Sie -V 65 angeben, versucht der Befehl bcp zunächst, den Datumswert in der Datendatei mithilfe des ODBC-Datumsformats zu konvertieren. Wenn die Konvertierung einen Fehler erzeugt, versucht bcp den Datumswert mithilfe von DB-Library-Formaten zu konvertieren.

Der Befehl bcp exportiert Datendateien im Zeichenformat immer mithilfe des ODBC-Standardformats für datetime- und smalldatetime-Werte, auch wenn -V 65 angegeben wurde. 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.

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

Die Verwendung des -V 65-Schalters kann aufgrund des Aufwands, der zur Unterstützung mehrerer Datumskonvertierungen erforderlich ist, die Leistung beeinträchtigen.

Anzeigen: