SET NOCOUNT ON

Cooper
Дата: 13.12.2002 11:28:20
Доброе утро!

Подскажите в каких случаях нужно применять SET NOCOUNT ON.

Спасибо!
Cat2
Дата: 13.12.2002 11:40:25
Во всех.
SET NOCOUNT OFF иногда полезен только при отладке запросов в QA, когда нужно видеть сколько рядов обработались.

Если в запросе используется @@ROWCOUNT, то установка SET NOCOUNT ON - обязательна
Предводитель команчей
Дата: 13.12.2002 12:16:30
Так же, необходимо пользоваться этой установкой при работе с SQL Server посредством ADO.
jimmers
Дата: 13.12.2002 12:20:59
2Cat2:

Если в запросе используется @@ROWCOUNT, то установка SET NOCOUNT ON - обязательна

Это еще почему?
?
Дата: 13.12.2002 12:24:21
Команда SET NOCOUNT не влияет на функцию @@rowcount.

Функция всегда возвращает количество записей, учавствоваших в выполнении предыдущей команды SQL, даже если флаг NOCOUNT находится в состоянии OFF


При установке SET NOCOUNT ON - уменьшается сетевой трафик (в определенных случаях значительно).

p.s.

Поправьте пож-ста если Вы что-то другое имели ввиду.

:)
Судя по активности, Cooper пишет что-то грандиозное.
Cooper
Дата: 13.12.2002 13:43:00
Ваще-то я хотел узнать, что они делают (set nocount on и set nocount off). Во многих кодах их видел, а для чего они нужны представляю смутно.

Но самое главное откуда у меня стока вопросов, я не могу понять почему х.процедуры не до конца отрабатываются! Ведут себя совершенно непредсказуемо!!!!!!!!!

Вот живой Вам пример:

CREATE PROCEDURE SP_Add(@Fname varchar(50))
as
begin
exec sp_addlogin @Fname, @Fpassword
exec sp_grantdbaccess @Fname, @Fname
exec sp_addrolemember @Frole, @Fname
exec sp_droplogin @Fname
end

По всей логике(по моей), в последней строке уч.запись должна быть удалена.
НО!!! выполняю процедуру, и меня результат подвергает в шоковое состояние!
Уч.запись НЕ УДАЛЕНА!!!

Мот х.процедура вылетает раньше?
И таких примеров у меня уже полные штаны.
Вот и хочу выяснить откуда растут ноги!

Подскажите пжалста на этом примерчике, в чем ошибка.

2 ?
:) Активность связана не с грандиозностью, а с ограниченным временем!
ziktuw
Дата: 13.12.2002 14:00:30
После sp_grantdbaccess учетная запись не может быть удалена посредством sp_droplogin, так как в базе создан пользователь и сперва его необходимо удалить через sp_dropuser. Это описано в справке по sp_droplogin
Cat2
Дата: 13.12.2002 14:02:03
Перепутал.

The @@ROWCOUNT function is updated even when SET NOCOUNT is ON.

Что-то у меня из памяти "EVEN" выпало.

Но я так думаю, на результат это-бы не повлияло
Cooper
Дата: 13.12.2002 14:25:14
2 Dankov
Удивительно, два дня мудился с этой процедурой и как-тока понял в чем касяк, и ты сразу же дал ответ, но все равно спасибо.

2 Cat2
Я все равно не пойму что делают SET NOCOUNT ON и SET NOCOUNT OFF.
У меня есть две здоровенные книжки по MS SQL SERVER 2000, но там я ни слова про энто не нашел. Поэтому и интересуюсь. У меня такое предчувствие, что здесь какие-то грабли!
Cat2
Дата: 13.12.2002 14:57:02
Не бери в голову. Это просто флаг, указывающий нужно ли после выполнения каждого запроса возвращать информацию о количестве обработанных запросом строк. Если OFF, то в конце каждого запроса в QA пишется "N rows affected".

Клиенту эти данные не нужны и в большинстве случаев клиент их и не воспринимает. Грабли могут приключится, если запрос состоит из нескольких операторов, поэтому, на всякий случай лучше всегда ставить SET NOCOUNT ON.

Ну это вроде как зубы чистить. Профилактика.