Не удается изменить поля nvarchar в SQL Server Management Studio 2008 R2 со странным сообщением - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь отредактировать значение в таблице с примерно 50 столбцами, используя SQL Server Management Studio 2008 R2 (10.50.2500.0). Один из столбцов является обычным стандартным текстовым столбцом для электронной почты (без ограничений, без FK, ничего):

CREATE TABLE [dbo].[Members](
    [Id] [uniqueidentifier] NOT NULL,
          ....
    [Email] [nvarchar](250) NOT NULL,
          ....

Я делаю щелчок правой кнопкой мыши по таблице, нажимаю «Изменить верхние 200 строк», выбираю строку и обновляю электронную почту с «aaa» до «bbb». Я получаю это сообщение об ошибке при попытке покинуть строку:

Microsoft SQL Server Management Studio

Строка не обновлена.

Данные в строке 2 не были зафиксированы. Источник ошибки: mscorlib. ошибка Сообщение: смещение и длина вышли за пределы массива или счетчика больше, чем количество элементов от индекса до конца Исходная коллекция.

Исправьте ошибки и повторите попытку или нажмите ESC, чтобы отменить изменения.

OK Справка

Если я обновлю значение с помощью сценария SQL, все будет работать нормально:

UPDATE [dbo].[Members] SET [Email] = 'bbb' WHERE Email = 'aaa'

Есть идеи, что здесь происходит? Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Вам необходимо определить первичный ключ в таблице, чтобы надежно использовать функцию 'edit'.

В вашем запросе "update where" получит все строки, которые соответствуют предложению where, этому илимного.С помощью инструмента редактирования, однако, он знает, что обновление должно быть только для одной строки, но из-за отсутствия PK не может определить, какой из них безопасно.

Из моего опыта единственный раз, когда вы можете безопасно использовать инструмент редактирования безPK - это когда все строки по-разному оцениваются, образуя (по сути) всю строку PK.

1 голос
/ 22 марта 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...