none
insert com select bancos diferentes RRS feed

  • Pergunta

  • Ola pessoal

    Estou tentando fazer um select entre dois bancos diferentes, com a mesma estrutura de tabelas e mesma instancia,

    porem estou tento o erro abaixo:

    insert WebTD..tblWRICaixaAutenticacao (FK_tblSIPSistemas_IdSistema, FK_tblWRICaixaDiarioSintetico_DataMovto, FK_tblWRICaixas_Id,

    PK_SeqAutenticacao, FlagDocumento, NumeroDocumento, ItemDocumento, FK_tblWRIHistorico_Id, FK_tblWRICaixaFormaPagto_Id,

    NomeInteressado, BancoCheque, AgenciaCheque, NumeroCheque, HoraAutenticacao, Observacao, VlrAutenticacao, IDAberturaCaixa, DebCre, IDExecRotina, Estornado, NumeroDeposito, ContaCheque, FK_tblSIPUsuarios_IdUser, processamento, PK_Id, WebRI_CaixaIntegrado_CaixaAtendimento_Id)

    select *from WebTD_Teste..tblWRICaixaAutenticacao where PK_SeqAutenticacao =17

    Cannot insert explicit value for identity column in table  ‘tblwricaixaautenticacao’  when IDENTITY_INSERT is set to off

    Como posso resolver?

    sexta-feira, 20 de setembro de 2019 20:00

Respostas

  • Tiago, a mensagem de erro informa que houve tentativa de incluir valor em coluna que está declarada com a propriedade identity. Isto somente é possível caso IDENTITY_INSERT seja ativado. Algo assim:

    -- código #1
    set IDENTITY_INSERT tabela_2 on;
    
    INSERT into tabela_2 (colunas)
      SELECT colunas
        from tabelas_1
        where ...
    
    set IDENTITY_INSERT tabela_2 off;
     

    Evite utilizar * na cláusula SELECT, pois embora as duas tabelas estejam com a mesma estrutura (conforme você mencionou) não se sabe se foram declaradas na mesma ordem.

     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Tiago_Aurelio sexta-feira, 20 de setembro de 2019 20:47
    • Editado José Diz sexta-feira, 20 de setembro de 2019 20:48
    sexta-feira, 20 de setembro de 2019 20:14

Todas as Respostas

  • Tiago, a mensagem de erro informa que houve tentativa de incluir valor em coluna que está declarada com a propriedade identity. Isto somente é possível caso IDENTITY_INSERT seja ativado. Algo assim:

    -- código #1
    set IDENTITY_INSERT tabela_2 on;
    
    INSERT into tabela_2 (colunas)
      SELECT colunas
        from tabelas_1
        where ...
    
    set IDENTITY_INSERT tabela_2 off;
     

    Evite utilizar * na cláusula SELECT, pois embora as duas tabelas estejam com a mesma estrutura (conforme você mencionou) não se sabe se foram declaradas na mesma ordem.

     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Tiago_Aurelio sexta-feira, 20 de setembro de 2019 20:47
    • Editado José Diz sexta-feira, 20 de setembro de 2019 20:48
    sexta-feira, 20 de setembro de 2019 20:14
  • Estou recebendo estes dois erros agora:

    Only one expression can be specified in the select list when the subquery is not introduced with EXISTS

    there are more columns in the insert statement than values specified in the values clause

    sexta-feira, 20 de setembro de 2019 20:28
  • there are more columns in the insert statement than values specified in the values clause

    Como foi comentado anteriormente, evite o uso de SELECT *.

    Informe na cláusula SELECT as respectivas colunas que fazem parte da lista de colunas do INSERT. Uma por uma, o mesmo número de colunas no SELECT e na tabela do INSERT.

    ---

    Dica: sempre que ocorrer uma mensagem de erro, pesquise na web pelo texto dela. Por exemplo:
      sql server there are more columns in the insert statement than values specified in the values clause

    Quas sempre se encontra a solução em casos semelhantes, obtendo a resposta rapidamente.


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
    • Editado José Diz sexta-feira, 20 de setembro de 2019 23:14
    sexta-feira, 20 de setembro de 2019 20:45