sql >> Databáze >  >> RDS >> Sqlserver

Datum musí být mezi 1/1/1753 00:00:00 a 12/31/9999 23:59:59 Chyba přetečení SqlBulkCopy

No, MS Access představuje svůj datetime datový typ jako double :

  • Epocha (nulový bod) kalendáře MS je 30 December 1899 00:00:00
  • Celočíselná část double je posun ve dnech od epochy a
  • Zlomková část double je zlomková část dne.

Podle specifikace doména části data v MS Access datetime je

  • dolní hranice:1 January 100
  • horní hranice:31 December 9999

A od domény SQL Server datetime je:

  • dolní hranice:1 January 1753
  • horní hranice:31 December 9999

všechna data ve vaší databázi MS Access před 1. lednem 1753 způsobí problémy. Musíte najít falešná data a opravit je. Několik přístupů:

  • V databázi Access vytvořte pohled/dotaz, který bude data prezentovat ve formě, která je pro SQL Server přijatelná. Poté z toho hromadně načtěte do SQL Server.

  • Často, protože je v podstatě předem rozhodnuto, že vaše zdrojová data jsou špinavá/poškozená, při hromadném načítání dat na SQL Server se zdrojová data hromadně načtou do pracovní tabulky, kde všechny sloupce mohou obsahovat hodnotu null, typu varchar typů a nemá žádná omezení/klíče. Jakmile to uděláte, spusťte uloženou proceduru, která provede nezbytné vyčištění a zmasírování dat před jejich přesunem do správného domova.




  1. Načítání výsledku jednoho řádku bez opakování ve smyčce z Mysql pomocí Java

  2. nejlepší způsob volání dvou databázových serverů

  3. ASP.NET - ORA-04068:stávající stav balíčků byl zahozen

  4. Přidání dat do databáze Cloud Firestore