У меня есть кластеризованный индекс, который находится над несколькими полями. Одно из этих полей - CustomerID. У меня есть курсор, который читается из этой таблицы, а затем обновляет CustomerID. Проблема в том, что он вызывает бесконечный цикл. Я предполагаю, что когда он изменяет поле customerid, кластеризованный индекс изменяется и таблица реструктурируется для индекса. Эта модификация, по-видимому, недействительна для моего курсора, поэтому FETCH NEXT FROM Cursor никогда не доходит до конца.Обновление кластерного индекса из проблемы с курсором
FETCH NEXT FROM AccountSoftwareRegCursor
INTO @CurrentAccountSoftwareRegUId
WHILE (@@FETCH_STATUS = 0)
BEGIN
UPDATE
Licensing.AccountSoftwareRegistration
SET
AccountUid = @ToAccountUid,
CompanyId = @ToCompanyId,
UpdatedBy = isnull(@UpdatedBy,'Asset Transfer'),
UpdatedByAccount = @UpdatedByAccount,
UpdatedOn = GETUTCDATE()
WHERE
AccountSoftwareRegUid = @CurrentAccountSoftwareRegUId
Есть ли команда, я могу выдать, чтобы остановить таблицу из не обновления таблицы для кластерного индекса только после завершения курсора?
Можете ли вы показать нам весь код, от населенности вашего курсора до его закрытия ?; Я имею в виду, что, как мы знаем, вы можете пропустить какой-либо другой оператор, который заставляет ваш курсор перемещаться по бесконечному циклу. – Lamak
Для этого в курсоре нет НИКАКОГО ПРИЧИНА. Это должна быть операция на основе набора. Пожалуйста, прочитайте: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them – HLGEM
Я не могу показать вам весь код, извините. Я даже не уверен, что моя политика работодателей в том, что я уже показал. Я выполнил принятый ответ ниже как бандад. Теперь я переписываю хранимую процедуру, чтобы не использовать курсор. –