2013-03-12 3 views
1

Я вставляю значения из одной таблицы в другую таблицу. В таблице 100000 записей. Но когда я начинаю вставлять значение из одной таблицы в другую таблицу, в моей строке есть проблема в любой строке. Я не знаю, где именно. Итак, как я могу узнать, в какой строке значение является ошибкой, потому что оператор insert не завершен? После ошибки эта остановка ничего не вставляет в таблицу. Это простое утверждение, что я использую:Как найти значение ошибки в таблице sql

INSERT INTO Person (FirstName, LastName,Email) 
SELECT FirstName, LastName, Email 
FROM Person.Contact 
+0

У вас есть сообщение об ошибке? –

+0

предоставить больше данных –

+0

Существует таблица Person в схеме dbo и есть таблица Контакт в схеме Person? Какие ограничения накладываются на 'dbo.Person' (нулевой, первичный ключ, внешний ключ, уникальный, чек, триггеры)? Пожалуйста, добавьте полную таблицу создания для сообщений об ошибках 'dbo.Person' plus. Чтобы ответить на ваш вопрос в ближайшее время: вы должны проверить, какие строки 'Person.Contact' нарушают какие-либо ограничения из' dbo.Person'. – Claude

ответ

0

quesion трудно понять, но обычные подозреваемые:

  1. Попытка вставить Null в Ненулевые колонке

  2. Нарушение внешних ключей

  3. Нарушения, связанные с ограничением.

  4. Попытка вставить неправильный тип данных.

Пожалуйста, отредактируйте ваш вопрос, чтобы добавить сообщение об ошибке.

+0

если какая-либо проблема в данных в таблице, как я могу узнать, где проблема, то в этой строке таблицы –

0

Я думаю Person это название вашей схемы, так что, может быть, вы имеете в виду

INSERT INTO Person.Person (FirstName, LastName,Email) 
SELECT FirstName, LastName, Email 
FROM Person.Contact 
+0

, если какая-либо проблема в данных в таблице, как я могу знать, где проблема, означает в этой строке table –

+0

в сообщении об ошибке, вопрос, откуда вы знаете, что произошла ошибка в вашем заявлении 'INSERT'? –

1

без какой-либо дополнительной информации о ограничениях на целевой таблице очень общее, медленное решение будет

  1. петля курсора над выбранными строками
  2. вставить любую строку в пределах try/catch
  3. на выход исключения строка и сообщение об ошибке

Для получения конкретного ответа на вашу проблему предоставьте дополнительную информацию.

Альтернативный метод заключается в использовании SSIS: здесь вы можете предоставить отдельный канал для ошибочных строк. Этот канал можно привести к отдельной таблице, собирая все строки, вызывающие ошибку.