sql >> Database teknologi >  >> RDS >> Sqlserver

Dato skal være mellem 1/1/1753 12:00:00 AM og 12/31/9999 11:59:59 PM Overflow fejl SqlBulkCopy

Nå, MS Access repræsenterer dens datetime datatype som en double :

  • Epoken (nulpunkt) i MS-kalenderen er 30 December 1899 00:00:00
  • Heltalsdelen af ​​double er forskydningen i dage fra epoken, og
  • Brøkdelen af ​​double er brøkdelen af ​​dagen.

I henhold til specifikationen, domænet for datodelen af ​​en MS Access datetime er

  • nedre grænse:1 January 100
  • øvre grænse:31 December 9999

Og siden domænet for en SQL Server datetime er:

  • nedre grænse:1 January 1753
  • øvre grænse:31 December 9999

alle datoer i din MS Access-database før 1. januar 1753 vil give problemer. Du skal finde de falske data og rette dem. Et par tilgange:

  • I din adgangsdatabase skal du oprette en visning/forespørgsel for at præsentere dataene i en form, der er velsmagende for SQL Server. Derefter skal du masseindlæse fra det til SQL Server.

  • Ofte, da det stort set er en selvfølge, at dine kildedata er snavsede/ødelagte, vil man, når bulk-indlæsning af data ind i SQL Server, bulk-indlæse kildedataene i en arbejdstabel, hvor alle kolonnerne er nullable, af typen varchar typer, og som ikke har nogen begrænsninger/nøgler. Når det er gjort, skal du køre en lagret procedure, der foretager den nødvendige oprydning og massering af dataene, før de flyttes til det rigtige hjem.




  1. VÆLG DISTINCT kun de første fire numre

  2. Oracle tidsstempel med lokale tidszoneværdier gennemsigtig oversættelse

  3. Implementering af link i PHP foreach loop

  4. MySQL Daemon problem