sql >> Base de Datos >  >> RDS >> Sqlserver

Fecha Debe estar entre el 1/1/1753 12:00:00 a. m. y el 31/12/9999 11:59:59 p. m. Error de desbordamiento SqlBulkCopy

Bueno, MS Access representa su datetime tipo de datos como double :

  • La época (punto cero) del calendario MS es 30 December 1899 00:00:00
  • La parte entera del double es el desfase en días desde la época, y
  • La parte fraccionaria del double es la parte fraccionaria del día.

Según la especificación, el dominio de la parte de la fecha de un MS Access datetime es

  • límite inferior:1 January 100
  • límite superior:31 December 9999

Y dado que el dominio de un SQL Server datetime es:

  • límite inferior:1 January 1753
  • límite superior:31 December 9999

cualquier fecha en su base de datos de MS Access anterior al 1 de enero de 1753 causará problemas. Necesita encontrar los datos falsos y corregirlos. Un par de enfoques:

  • En su base de datos de acceso, cree una vista/consulta para presentar los datos en una forma aceptable para SQL Server. Luego, cargue de forma masiva desde eso a SQL Server.

  • A menudo, dado que es prácticamente una conclusión inevitable que sus datos de origen están sucios/corrompidos, cuando se cargan datos de forma masiva en SQL Server, uno cargará de forma masiva los datos de origen en una tabla de trabajo donde todas las columnas son anulables, de tipo varchar tipos y que no tiene restricciones/claves. Una vez hecho esto, ejecute un procedimiento almacenado que realice la limpieza y el masaje necesarios de los datos antes de moverlos a su lugar adecuado.