Pregunta

Estoy escribiendo una pequeña utilidad para copiar una base de datos de una base de datos ODBC patentada a una base de datos de SQL Server.Todo está funcionando muy bien, excepto cuando utilizo SQLBULKCOPY para copiar los datos.Funciona en la mayoría de los casos, pero no cuando está tratando de copiar un campo de tiempo en un DateTime SQL.Recibo este error:

El valor dado de TIPO TEMPORSPAN de la fuente de datos no se puede convertir en DateTime type de la columna de destino especificada.

Cuando creo el esquema en SQL Server, tengo que hacer que los tipos de datos de Fecha y Time Campos DateTime en SQL Server, por lo que no hay manera de evitar esto.Quería usar SQLBULKCOPY, así que no tuviera que leer manualmente todos los récord en cada tabla y envolver la lógica en torno a los casos especiales.Antes de bajar esa carretera, ¿hay otra forma en que puedo hacer esto?No tengo control en absoluto en el esquema o contenido de la base de datos de origen.

¿Fue útil?

Solución

Supongo que está tratando con Pre-SQL Server 2008. SQL Server 2008 tiene tipos de datos de fecha y hora.

Creo que tendría que usar un esquema de datos de SQL, que coincidiera con el esquema de SQL Server y cargarlo de su lector de origen, cambiando adecuadamente cualquier momento a un DateTime agregando información de la fecha (por ejemplo, 1/1/1900).Luego use WriteToserver (DataTable).Es posible que desee hacerlo en lotes, ya que puede usar un montón de memoria que leé todo en un DataTable.

¿Alguna razón en particular no puede usar SSIS?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top