Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Datum Muss zwischen dem 1.1.1753 00:00 Uhr und dem 31.12.9999 23:59:59 Uhr liegen Überlauffehler SqlBulkCopy

Nun, MS Access repräsentiert seine datetime Datentyp als double :

  • Die Epoche (Nullpunkt) des MS-Kalenders ist 30 December 1899 00:00:00
  • Der ganzzahlige Teil des double ist der Versatz in Tagen von der Epoche, und
  • Der Bruchteil des double ist der Bruchteil des Tages.

Gemäß der Spezifikation die Domäne des Datumsteils eines MS Access datetime ist

  • Untergrenze:1 January 100
  • Obergrenze:31 December 9999

Und seit der Domäne eines SQL Servers datetime ist:

  • untere Grenze:1 January 1753
  • Obergrenze:31 December 9999

Alle Daten in Ihrer MS Access-Datenbank vor dem 1. Januar 1753 werden Probleme verursachen. Sie müssen die gefälschten Daten finden und beheben. Ein paar Ansätze:

  • Erstellen Sie in Ihrer Access-Datenbank eine Ansicht/Abfrage, um die Daten in einer für SQL Server ansprechenden Form darzustellen. Dann massenweises Laden davon in SQL Server.

  • Da es so ziemlich eine ausgemachte Sache ist, dass Ihre Quelldaten schmutzig/beschädigt sind, werden beim Massenladen von Daten in SQL Server die Quelldaten häufig in eine Arbeitstabelle geladen, in der alle Spalten nullfähig sind, vom Typ varchar Typen und das hat keine Einschränkungen/Schlüssel. Sobald dies erledigt ist, führen Sie eine gespeicherte Prozedur aus, die die notwendige Bereinigung und Massierung der Daten vornimmt, bevor sie an ihren richtigen Ort verschoben werden.