Pergunta

Estou escrevendo um pequeno utilitário para copiar um banco de dados de um banco de dados ODBC proprietário em um banco de dados do SQL Server.Tudo está funcionando muito, exceto quando uso Sqlbulkcopy para copiar os dados.Funciona na maioria dos casos, mas não quando está tentando copiar um campo de tempo em um DateTime SQL.Eu recebo este erro:

O valor fornecido do Tipo Timespan da fonte de dados não pode ser convertido para digitar o DateTime da coluna de destino especificado.

Quando eu crio o esquema no SQL Server, tenho que fazer os tipos de data e transmissão de data e hora do SQL Server, portanto, não há nenhuma passagem.Eu queria usar sqlbulkcopy para que eu não tive que ler manualmente a cada registro em todas as tabelas e envoltar lógica em torno dos casos especiais.Antes de descer essa estrada, há outra maneira que posso fazer isso?Não tenho controle no esquema ou conteúdo do banco de dados de origem.

Foi útil?

Solução

Eu suponho que você está lidando com o Pré-SQL Server 2008. O SQL Server 2008 possui tipos de dados de data e hora.

Eu acho que você teria que usar um diotatable que corresponde ao esquema do SQL Server e carregue isso a partir do seu leitor de origem, alterando adequadamente a qualquer momento para um DateTime adicionando informações de data (e. 1/1/1900).Em seguida, use o WritetServer (DataTable).Você pode querer fazer isso em lotes, já que você pode usar um monte de memória lendo tudo em um datatable.

Qualquer razão em particular que você não possa usar o SSIS?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top