Некорректно выполняется процедура.
От: sYgiL  
Дата: 09.02.06 08:57
Оценка:
Добрый день, у меня возникла проблема.
Из свого ASP.NET приложения я вызываю хранимую процедуру для обновления статуса сообщения следующим образом.
UpdateMessageStatus("Closed");
Где внутри UpdateMessageStatus выполняется
SqlCommand cmd = new SqlCommand("spMessageStatusUpdate", sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MessageID", MessageID);
((SqlParameter)cmd.Parameters.Add("@Status", SqlDbType.VarChar, 20)).Value = status;
cmd.ExecuteNonQuery();

После выполнения этого запроса по SQL Profiler видно, что на сервер пошел запрос
exec spMessageStatusUpdate @MessageID = 3, @Status = 'Closed'
НО при этом статус сообщения не обновился.
Если же этот самый запрос скопировать в Query Analyzer, то статус обновляется.
Собственно сама процедура
ALTER PROCEDURE dbo.spMessageStatusUpdate
@MessageID int,
@Status varchar (20)
AS
BEGIN
DECLARE @StatusID int
SELECT @StatusID = S.StatusID From Status S
WHERE S.[Name]= @Status
UPDATE Message SET StatusID = @StatusID
WHERE
Message.MessageID = @MessageID
END

Опытным путем было выявлено, что не происходит выборка
SELECT @StatusID = S.StatusID From Status S
WHERE S.[Name]= @Status

Объясните, с чем это может быть связано? Пробовал различные варианты сравнения (LIKE, через RTRIM, добавлял COLLATE, через nvarchar) — нчиего не помогает. Из приложения не выполняется, из Query Analyzer работает.
Re: Некорректно выполняется процедура.
От: pkarklin  
Дата: 09.02.06 09:40
Оценка:
Здравствуйте, sYgiL, Вы писали:

YL>Добрый день, у меня возникла проблема.



YL>После выполнения этого запроса по SQL Profiler видно, что на сервер пошел запрос

YL>exec spMessageStatusUpdate @MessageID = 3, @Status = 'Closed'
YL>НО при этом статус сообщения не обновился.
YL>Если же этот самый запрос скопировать в Query Analyzer, то статус обновляется.

Как проверяете, что "статус сообщения не обновился". Есть ли в профайлере команды управления транзакциями?
Re[2]: Некорректно выполняется процедура.
От: sYgiL  
Дата: 09.02.06 09:42
Оценка:
Здравствуйте, pkarklin, Вы писали:

P>Здравствуйте, sYgiL, Вы писали:


YL>>Добрый день, у меня возникла проблема.



YL>>После выполнения этого запроса по SQL Profiler видно, что на сервер пошел запрос

YL>>exec spMessageStatusUpdate @MessageID = 3, @Status = 'Closed'
YL>>НО при этом статус сообщения не обновился.
YL>>Если же этот самый запрос скопировать в Query Analyzer, то статус обновляется.

P>Как проверяете, что "статус сообщения не обновился". Есть ли в профайлере команды управления транзакциями?

Проверяю обычным просмотром таблицы Message, где StatusID по прежнему равен 1, вместо положенных 3.
Насчет профайлера не совсем понял.
Я просто мониторю в нем, какой запрос посылается на сервер.
Re[3]: Некорректно выполняется процедура.
От: pkarklin  
Дата: 09.02.06 09:48
Оценка:
Здравствуйте, sYgiL, Вы писали:

YL>Здравствуйте, pkarklin, Вы писали:


P>>Здравствуйте, sYgiL, Вы писали:


YL>>>Добрый день, у меня возникла проблема.



YL>>>После выполнения этого запроса по SQL Profiler видно, что на сервер пошел запрос

YL>>>exec spMessageStatusUpdate @MessageID = 3, @Status = 'Closed'
YL>>>НО при этом статус сообщения не обновился.
YL>>>Если же этот самый запрос скопировать в Query Analyzer, то статус обновляется.

P>>Как проверяете, что "статус сообщения не обновился". Есть ли в профайлере команды управления транзакциями?

YL>Проверяю обычным просмотром таблицы Message, где StatusID по прежнему равен 1, вместо положенных 3.
YL>Насчет профайлера не совсем понял.
YL>Я просто мониторю в нем, какой запрос посылается на сервер.

Я иммел ввиду, что может Вы транзакциями управляете и не закрываете ее.
Re[4]: Некорректно выполняется процедура.
От: sYgiL  
Дата: 09.02.06 10:14
Оценка:
Здравствуйте, pkarklin, Вы писали:

P>Я иммел ввиду, что может Вы транзакциями управляете и не закрываете ее.

Точно.. закрыл профайлер и все сразу заработало. спасибо.
Re[5]: Некорректно выполняется процедура.
От: pkarklin  
Дата: 09.02.06 10:16
Оценка:
Здравствуйте, sYgiL, Вы писали:

YL>Здравствуйте, pkarklin, Вы писали:


P>>Я иммел ввиду, что может Вы транзакциями управляете и не закрываете ее.

YL>Точно.. закрыл профайлер и все сразу заработало. спасибо.

С этого момента можно по-подробнее. Коим боком профайлер мешал?!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.