Как выполнить массовое обновление в sql server 2008

У меня есть таблица, содержащая 10000 записей, теперь я добавил поле для размещения пароля в виде обычного текста, поэтому теперь я хочу обновить все записи, но должен обновить новое поле на основе имени пользователя ... как показано ниже.

update users set secdetail = case when username = 'abbas' then 'abbas@123' .... end

Я запускаю этот запрос из кода .net, используя sqlcommand, всякий раз, когда я пытаюсь обновить страницу после загрузки в течение некоторого времени, я получаю сообщение о том,

The query processor ran out of stack space during query optimization. Please simplify the query

Пожалуйста помоги.


person Abbas    schedule 08.11.2011    source источник
comment
«Случай» (как команда) не входит в логику sql, он здесь только для того, чтобы помочь в некоторых случаях, но не для обновления 10k записей, используемых в нем. Следуйте тому, что предлагает Грег.   -  person Aristos    schedule 09.11.2011


Ответы (1)


Почему бы не создать цикл в вашем коде .net для создания правильных операторов обновления sql, разделенных точкой с запятой

Update Users Set Secdetail = 'abbas@123' Where Username = 'abbas';
Update Users Set Secdetail = 'bbbas@123' Where Username = 'bbbas';
Update Users Set Secdetail = 'cbbas@123' Where Username = 'cbbas';
...
person Greg    schedule 08.11.2011
comment
Здесь говорится, что вам не следует использовать кейс операторы для больших наборов данных - person Greg; 09.11.2011