Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Data Musi mieścić się w przedziale od 1/01 1753 12:00:00 AM i 12/31/9999 23:59:59 PM Błąd przepełnienia SqlBulkCopy

Cóż, MS Access reprezentuje swoją datetime typ danych jako double :

  • epoka (punkt zerowy) kalendarza MS to 30 December 1899 00:00:00
  • Część całkowita elementu double jest przesunięciem w dniach od epoki, oraz
  • Ułamkowa część double to ułamkowa część dnia.

Zgodnie ze specyfikacją, domena części daty w MS Access datetime jest

  • dolna granica:1 January 100
  • górna granica:31 December 9999

A ponieważ domena SQL Server datetime jest:

  • dolna granica:1 January 1753
  • górna granica:31 December 9999

wszelkie daty w bazie danych MS Access sprzed 1 stycznia 1753 r. będą powodować problemy. Musisz znaleźć fałszywe dane i je naprawić. Kilka podejść:

  • W bazie danych dostępu utwórz widok/zapytanie, aby przedstawić dane w formie przystępnej dla SQL Server. Następnie załaduj zbiorczo z tego do SQL Server.

  • Często, ponieważ jest to prawie przesądzone, że dane źródłowe są brudne/uszkodzone, podczas zbiorczego ładowania danych do SQL Server, dane źródłowe zostaną załadowane zbiorczo do tabeli roboczej, w której wszystkie kolumny mają wartość null, typu varchar typy i które nie mają ograniczeń/kluczy. Gdy to zrobisz, uruchom procedurę składowaną, która wykona niezbędne czyszczenie i masowanie danych przed przeniesieniem ich do właściwego miejsca zamieszkania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć ograniczenie klucza obcego tylko wtedy, gdy istnieje na serwerze sql?

  2. Dlaczego nie mogę użyć aliasu w instrukcji DELETE?

  3. Połącz wiele wierszy z wielu tabel

  4. Uwagi na temat edycji SQL Server 2019

  5. Wyzwalacz SQL Insert do aktualizacji wartości tabeli INSERTED