Убедитесь, что имена столбцов, типы данных и порядок в таблице, из которой вы выбираете записи, в точности совпадают с таблицей назначения. Единственная разница должна заключаться в том, что таблица назначения имеет столбец идентификатора в качестве первого столбца, которого нет в исходной таблице.
Я столкнулся с подобной проблемой, когда выполнял «INSERT INTO table_Dest SELECT * FROM table_source_linked_server_excel». Таблицы имели 115 столбцов.
У меня было две такие таблицы, где я загружал данные из Excel (как связанный сервер) в таблицы в базе данных. В таблицах базы данных я добавил столбец идентификаторов «id», которого не было в исходном Excel. Для одной таблицы запрос выполнялся успешно, а в другой я получил сообщение об ошибке «Явное значение для столбца идентификаторов в таблице можно указывать только в том случае, если используется список столбцов, а IDENTITY_INSERT включен ON SQL Server». Это было загадочно, так как сценарий был одинаковым для обоих запросов. Поэтому я исследовал это и обнаружил, что в запросе, где я получаю сообщение об ошибке с INSERT INTO .. SELECT *:
- Некоторые имена столбцов в исходной таблице были изменены, хотя значения были правильными
- Были некоторые дополнительные столбцы помимо фактических столбцов данных, которые были выбраны с помощью SELECT *. Я обнаружил это с помощью опции «Таблица сценариев как> Выбрать для> нового окна запроса» в исходной таблице Excel (в разделе связанных серверов). Сразу после последнего столбца в Excel был один скрытый столбец, хотя в нем не было никаких данных. Я удалил этот столбец в исходной таблице Excel и сохранил его.
После двух вышеуказанных изменений запрос INSERT INTO ... SELECT * был успешно выполнен. Столбец идентификаторов в таблице назначения генерирует значения идентификаторов для каждой вставленной строки, как и ожидалось.
Таким образом, даже если таблица назначения может иметь столбец идентификаторов, которого нет в исходной таблице, INSERT INTO .. SELECT * будет успешно выполнен, если имена, типы данных и порядок столбцов в источнике и месте назначения точно совпадают.
Надеюсь, это кому-нибудь поможет.