powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллелизм внутри курсора
6 сообщений из 6, страница 1 из 1
Параллелизм внутри курсора
    #40018109
lex452
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста. Стоит задача обновить в таблице все значения в текстовых полях с null на пустоту ''. Решил использовать динамический sql. Получаю список всех текстовых колонок в таблице, и пробегаюсь курсором по этому списку , внутри курсора делая


Код: sql
1.
2.
3.
EXEC('UPDATE '+@tablename+'
set '+@columnName+'=''''
WHERE  '+@columnName+' is null ')




но периодически возникают deadlock блокировки по которым видно, что одновременно идет update разных колонок в одной таблице, чего (по моей логике) быть не должно.
Внимание вопрос, возможно ли что внутри курсора идет выполнение не последовательно, а параллельно и если да, то как этого избежать?
...
Рейтинг: 0 / 0
Параллелизм внутри курсора
    #40018111
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стейтменты в одной сессии всегда выполняются последовательно.
...
Рейтинг: 0 / 0
Параллелизм внутри курсора
    #40018114
lex452
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич, спасибо, буду искать проблему в другом месте
...
Рейтинг: 0 / 0
Параллелизм внутри курсора
    #40018177
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lex452,

если Вы обновляете ту же таблицу, что и просматриваете, то такое возможно. Откройте профайлер и запищите трассу событий deadlock c XML графом, увидите - откуда берутся взаимоблокировки.
...
Рейтинг: 0 / 0
Параллелизм внутри курсора
    #40018259
lex452
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
lex452,

если Вы обновляете ту же таблицу, что и просматриваете, то такое возможно. Откройте профайлер и запищите трассу событий deadlock c XML графом, увидите - откуда берутся взаимоблокировки.


Обновление идет в отдельном потоке, но теоретически эту таблицу могут просматривать в это же время правда с хинтом (nolock). А где связь между тем что одно обновление блокирует другое и одновременным просмотром, не понимаю?
...
Рейтинг: 0 / 0
Параллелизм внутри курсора
    #40018415
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lex452,

смотрите граф блокировки, там может быть что-то связанное и с курсором.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллелизм внутри курсора
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]