Certifique-se de que os nomes das colunas, tipos de dados e ordem na tabela de onde você está selecionando registros sejam exatamente iguais à tabela de destino. A única diferença deve ser que a tabela de destino possui uma coluna de identidade como a primeira coluna, que não existe na tabela de origem.
Eu estava enfrentando um problema semelhante ao executar "INSERT INTO table_Dest SELECT * FROM table_source_linked_server_excel". As tabelas tinham 115 colunas.
Eu tinha duas tabelas em que estava carregando dados do Excel (como servidor vinculado) em tabelas no banco de dados. Nas tabelas do banco de dados, eu adicionei uma coluna de identidade chamada 'id' que não estava lá no Excel de origem. Para uma tabela, a consulta foi executada com êxito e, em outra, recebi o erro "Um valor explícito para a coluna de identidade na tabela só pode ser especificado quando uma lista de colunas é usada e IDENTITY_INSERT está no SQL Server". Isso foi intrigante, pois o cenário era exatamente o mesmo para as duas consultas. Então, investiguei isso e o que descobri foi que, na consulta em que estava recebendo erro com INSERT INTO .. SELECT *:
- Alguns dos nomes de coluna na tabela de origem foram modificados, embora os valores estivessem corretos
- Havia algumas colunas extras além das colunas de dados reais que estavam sendo selecionadas por SELECT *. Descobri isso usando a opção "Tabela de scripts como> Selecionar para> nova janela de consulta" na tabela do Excel de origem (em servidores vinculados). Havia uma coluna oculta logo após a última coluna no Excel, embora não tivesse nenhum dado. Excluí essa coluna na tabela de origem do Excel e a salvei.
Depois de fazer as duas alterações acima, a consulta INSERT INTO ... SELECT * foi executada com êxito. A coluna de identidade na tabela de destino gerou valores de identidade para cada linha inserida conforme o esperado.
Portanto, mesmo que a tabela de destino possa ter uma coluna de identidade que não existe na tabela de origem, o INSERT INTO .. SELECT * será executado com êxito se os nomes, tipos de dados e ordem das colunas na origem e no destino forem exatamente os mesmos.
Espero que ajude alguém.