powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SET NOCOUNT [ON или OFF]?
10 сообщений из 10, страница 1 из 1
SET NOCOUNT [ON или OFF]?
    #32551840
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация:

MS SQL Server 2000 (sp3a)
В настройках коннекта по умоланию настроиваю эту опцию.

Везде рекомендуют ставить ON (у меня сложилось такое ощущение)

При этом пропали сообщение типа "Запись была изменена другим пользователем" в проектах ADP

Подключаюсь к серверу через ODBC и линкую таблицы к Акс97 (mdb)
На основе таблицы делаем форму на изменение данных
При некоторых условиях в форме необходимо сохранить редактируемую запись
Например: Me.Refresh или DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
На этой строке получаю сообщение об ошибке "ODBC --update on a linket table 'TableName' faliled."
Более того, если происходят изменения на форме, и я закрываю форму, то не происходит "привычного" сохранения записи :(

Если ставить SET NOCOUNT OFF, то в Аск97 все работает нормально (запись в связанной таблице сохраняется)

Может у меня руки кривые?
Или ODBC-драйвер, действительно, использует серверные сообщения?

Прошу высказывать свои мысли по данному поводу.

Спасибо.
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32551897
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET NOCOUNT OFF
Сервер старается угадать, что возвратит ХП
работает быстрее но иногда угадывает неправильно.
SET NOCOUNT ON
работает медленнее но работает

ИМХО
всегда делаем SET NOCOUNT OFF
если что (например ХП возвращает разные наборы в зависимости от IF)
делаем SET NOCOUNT ON
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32551953
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО: При SET NOCOUNT OFF - работает медленнее (увеличение сетевого трафика - как минимум)

Да, и ХП в приведенном примере не используются, понятно что в ХП можно установить любое значение на время выполнения этой ХП (не вопрос) :)

Вопрос как раз в поведении клиента Акс2000(adp) и Акс97(mdb+odbc) при непосредственной привязке формы к данным :(
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32551956
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИли ODBC-драйвер, действительно, использует серверные сообщения?
ОБЯЗАТЕЛЬНО использует.
АДО тоже ОБЯЗАТЕЛЬНО использует
ИМХО client-side рекордсет никак "правильно" не заработает,
при SET NOCOUNT ON

PS
paparome, поставь BOL - любой.

пока не поставил, вот цитата (красным выделено про "попытку угадать, иногда неправильно")

SET NOCOUNT
Stops the message indicating the number of rows affected by a Transact-SQL statement from being returned as part of the results.

Syntax
SET NOCOUNT { ON | OFF }

Remarks
When SET NOCOUNT is ON, the count (indicating the number of rows affected by a Transact-SQL statement) is not returned. When SET NOCOUNT is OFF, the count is returned.

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

SET NOCOUNT ON eliminates the sending of DONE_IN_PROC messages to the client for each statement in a stored procedure. When using the utilities provided with Microsoft® SQL Server™ to execute queries, the results prevent "nn rows affected" from being displayed at the end Transact-SQL statements such as SELECT, INSERT, UPDATE, and DELETE.

For stored procedures that contain several statements that do not return much actual data, this can provide a significant performance boost because network traffic is greatly reduced.

The setting of SET NOCOUNT is set at execute or run time and not at parse time.

Permissions
SET NOCOUNT permissions default to all users.

Examples
This example (when executed in the osql utility or SQL Query Analyzer) prevents the message (about the number of rows affected) from being displayed.

USE pubs
GO
-- Display the count message.
SELECT au_lname
FROM authors
GO
USE pubs
GO
-- SET NOCOUNT to ON and no longer display the count message.
SET NOCOUNT ON
GO
SELECT au_lname
FROM authors
GO
-- Reset SET NOCOUNT to OFF.
SET NOCOUNT OFF
GO
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32551970
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвот цитата (красным выделено про "попытку угадать, иногда неправильно")
авторThe @@ROWCOUNT function is updated even when SET NOCOUNT is ON.

И где здесь написано, что он пытается угадать?

ИМХО - здесь написано, что @@ROWCOUNT заполняется при любом значение параметра NOCOUNT

Вот выдержка из книги (перевод на русский):
Независимо от установки NOCOUNT количество строк, измененных последней командой, храниться в переменной @@ROWCOUNT

PS: А BOL у меня стоит, и читать я тоже умею :)
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32551990
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторчитать я тоже умею
это хорошо.
я вот, к сожалению, не возьмусь похвастать...
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32552003
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в сочетании с
When SET NOCOUNT is ON, the count (indicating the number of rows affected by a Transact-SQL statement) is not returned
это и значит, что "неправильно" :0)
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32552075
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assaв сочетании с
When SET NOCOUNT is ON, the count (indicating the number of rows affected by a Transact-SQL statement) is not returned
это и значит, что "неправильно" :0)

Что-то я сегодня не могу читать между строк :(
А где здесь сказано, что не правильно?
При SET NOCOUNT = ON, количество (индикация о кол-ве измененных/добавленных/выбранных записей) не возвращается сервером (ИМХО - вольный перевод)
т.е. не возвращается надпись типа: (240 row(s) affected)
но при этом SELECT @@ROWCOUNT честно вернет, 240? или нет?
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32552114
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторSELECT @@ROWCOUNT честно вернет, 240? или нет
вернет (если его никто не успеет попортить, например следующая команда в батче типа IF @@ERROR)
...
Рейтинг: 0 / 0
SET NOCOUNT [ON или OFF]?
    #32552408
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SET NOCOUNT [ON или OFF]?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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