Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A data deve estar entre 1/1/1753 12:00:00 AM e 31/12/9999 11:59:59 PM Erro de estouro SqlBulkCopy


Bem, MS Access representa seu datetime tipo de dados como um double :
  • A época (ponto zero) do calendário MS é 30 December 1899 00:00:00
  • A parte inteira do double é o deslocamento em dias a partir da época e
  • A parte fracionária do double é a parte fracionária do dia.

De acordo com a especificação, o domínio da parte de data de um MS Access datetime é
  • limite inferior:1 January 100
  • limite superior:31 December 9999

E como o domínio de um SQL Server datetime é:
  • limite inferior:1 January 1753
  • limite superior:31 December 9999

quaisquer datas em seu banco de dados MS Access anteriores a 1º de janeiro de 1753 causarão problemas. Você precisa encontrar os dados falsos e corrigi-los. Algumas abordagens:

  • Em seu banco de dados de acesso, crie uma visualização/consulta para apresentar os dados em um formato palatável para o SQL Server. Em seguida, carregue em massa disso para o SQL Server.

  • Muitas vezes, como é praticamente uma conclusão precipitada de que seus dados de origem estão sujos/corrompidos, ao carregar dados em massa no SQL Server, um carregará em massa os dados de origem em uma tabela de trabalho onde todas as colunas são anuláveis, do tipo varchar tipos e que não tem restrições/chaves. Feito isso, execute um procedimento armazenado que faça a limpeza e a massagem necessárias dos dados antes de movê-los para seu local apropriado.