sql >> Database >  >> RDS >> Sqlserver

Datum Moet tussen 1/1/1753 12:00:00 AM en 31/12/9999 23:59:59 PM zijn Overflow-fout SqlBulkCopy

Nou, MS Access vertegenwoordigt zijn datetime gegevenstype als een double :

  • Het tijdperk (nulpunt) van de MS-kalender is 30 December 1899 00:00:00
  • Het gehele gedeelte van de double is de offset in dagen vanaf het tijdperk, en
  • Het fractionele deel van de double is het fractionele deel van de dag.

Volgens de specificatie, het domein van het datumgedeelte van een MS Access datetime is

  • ondergrens:1 January 100
  • bovengrens:31 December 9999

En aangezien het domein van een SQL Server datetime is:

  • ondergrens:1 January 1753
  • bovengrens:31 December 9999

alle data in uw MS Access-database vóór 1 januari 1753 gaan problemen veroorzaken. U moet de valse gegevens vinden en repareren. Een paar benaderingen:

  • Maak in uw toegangsdatabase een weergave/query om de gegevens te presenteren in een vorm die geschikt is voor SQL Server. Laad vervolgens daarvan in bulk in SQL Server.

  • Vaak, aangezien het vrijwel een uitgemaakte zaak is dat uw brongegevens vuil/beschadigd zijn, zal men bij het bulksgewijs laden van gegevens in SQL Server de brongegevens in bulk laden in een werktabel waar alle kolommen nullable zijn, van het type varchar typen en dat heeft geen beperkingen/sleutels. Zodra dat is gebeurd, voert u een opgeslagen procedure uit die de nodige opschoning en massage van de gegevens uitvoert voordat deze naar de juiste plaats wordt verplaatst.




  1. Mysql-tabelkolom wijzigen om hoofdlettergevoelig te zijn

  2. selecteer en tel rijen

  3. Een MYSQL datetime afronden naar het vroegste interval van 15 minuten in milliseconden (PHP)

  4. Fix:"BACKUP LOG kan niet worden uitgevoerd omdat er geen huidige databaseback-up is." in SQL Server/SQL Edge