Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Versão original do produto: Host Integration Server
Número original do KB: 2848234
Sintomas
Considere o cenário a seguir.
Você usa o SQL Server Integration Services (SSIS) e o OLE DB Provider for DB2 para inserir dados em um banco de dados IBM DB2.
O Destino OLE DB no pacote SSIS é configurado com
Accessmode = OpenRowset Using FastLoad
.O banco de dados SQL Server de origem inclui alguns valores NULL para colunas definidas como tipos de dados DateTime2 e Date que serão inseridos em colunas do IBM DB2 definidas como tipos de dados TimeStamp e Date, respectivamente.
Durante o processo SSIS de inserção de dados no banco de dados IBM DB2, pode ocorrer um erro semelhante ao seguinte:
Erro: Código de erro SSIS DTS_E_OLEDBERROR. Ocorreu um erro OLE DB. Código de erro: 0x80004005. Está disponível um registro OLE DB. Fonte: "Provedor OLE DB do Microsoft DB2" Hresult: 0x80004005 Descrição: "Erro não especificado".
Está disponível um registro OLE DB. Fonte: "Provedor OLE DB do Microsoft DB2" Hresult: 0x80040E14 Descrição: "A sintaxe da representação de cadeia de caracteres de um valor datetime está incorreta. SQLSTATE: 22007, SQLCODE: -180".
Solução
Existem duas maneiras de resolver o problema.
Altere o Destino OLE DB no pacote SSIS a ser usado
AccessMode = OpenRowset
para desabilitar o uso doFastLoad
. A desvantagem dessa opção é que o desempenho das inserções no banco de dados DB2 será muito mais lento, pois cada linha é inserida uma de cada vez.Inclua o seguinte parâmetro na cadeia de conexão do DB2 usada pelo SSIS para se conectar ao sistema IBM DB2:
Use Early Metadata=true