2012-01-22 5 views
15

Я работаю над экземпляром SQL Server 2008 R2. Я только что изменил код для хранимой процедуры. Когда я пытаюсь отладить этот процесс, окно отладки SSMS показывает версию кода старше.Отладка не отображает текущую версию хранимой процедуры

Что я могу сделать, чтобы заставить SSMS представить текущую версию кода?

Заранее спасибо.

+0

ли вы изменить его с помощью 'ALTER PROCEDURE' скрипт? Если это так, попробуйте выполнить «ПРОЦЕДУРА DROP» + «СОЗДАТЬ ПРОЦЕДУЮ». У меня была эта проблема один раз - «ALTER» не обновлял процедуру в новой версии кода – GolfWolf

+0

Возможно, файл нужно сначала сохранить? – JeffO

+0

@JeffO: файл? Нет файла - я меняю процедуру непосредственно на сервер. – rsenna

ответ

9

Эта проблема существует уже в течение многих лет в SQL Server. Обычно для начала отладки и остановки отладчика требуется несколько раз, прежде чем синхронизировать с правильной версией источника.

Вы также заметите, что несколько окон открыты, показывая последний источник, о котором знает отладчик. Они должны быть закрыты. Несмотря на то, что это лаваш, самый быстрый способ устранить проблему - остановить студию управления и перезапустить ее.

+3

Используйте DBCC FREEPROCCACHE для очистки кеша процедур. -> Спасибо благодаря Дейву Пиналу (который знает все, что есть в SQL Server!) Http://blog.sqlauthority.com/2007/03/23/sql-server-stored-procedure-clean-cache-and-clean- buffer/ –

+3

Выполните следующие два утверждения: DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS от http://blog.sqlauthority.com/2007/03/23/sql-server-stored-procedure-clean-cache-and-clean-buffer/ –

3

Иногда ALTER PROCEDURE не обновляет процедуру, как предполагалось.

Я не уверен, как воспроизвести это или какие причины, но это случилось со мной (очень мало) раз.

Попробуйте сделать DROP PROCEDURE + CREATE PROCEDURE, чтобы убедиться, что новая версия процедуры правильно сохранена.

+1

Привет w0lf. Я не думаю, что ваши объяснения в точности верны: на самом деле процедура обновляется правильно, это просто SQL Server Management Studio (и базовая функция отладки), которая по какой-то причине не узнает об этом. Но он просто работает так, как ожидалось, если я делаю 'DROP' +' CREATE' вместо 'ALTER'. – rsenna

+0

@rsenna Ты прав. Некоторое время назад у меня была эта странная проблема, и я не помню всех деталей. – GolfWolf

6

Я просто перезапускаю SSMS, что решает проблему для меня.

Btw, я испытываю те же проблемы с SQL Management Server Studio 2012

6

Использование

DBCC FREEPROCCACHE

DBCC DROPCLEANBUFFERS

Благодаря связи с Дейвом PINAL (кто знает все вещи SQL Server !!) Dave Pinal Knows All!