Для чего используется опция TSQL "for BROWSE"?

Я работаю над запросом и нашел минимальную документацию от Microsoft по опции TSQL "для просмотра" в инструкции select.

Я видел для просмотра документально в качестве опции курсоров, но я не смог найти хороших примеров использования этого или причин для использования для просмотра в инструкции SELECT.

какие веские причины использовать для просмотра в инструкции TSQL SELECT?

Я использую SQL Server 2008 и 2012.

2 ответов


насколько я могу судить. Похоже, это интерфейс для реализации оптимистичный контроль параллелизма в приложении, где один или несколько пользователей будут получать доступ и обновлять данные из одного и того же источника одновременно. Он также работает в сочетании с совместимой библиотекой переднего плана (DB-Library). Однако, похоже, что это несколько устаревший механизм, поскольку вы можете достичь всего вышеперечисленного без использования "для Обзорdbopen".

кроме того, режим просмотра требует двух структур DBPROCESS: одна для выбор данных и другого для обновления на основе выбранного данные. src

вот пример использования запроса "for Browse" в соединение с DB-библиотекой.

в конечном счете, было бы разумно заключить, что этот механизм все-таки существует для обеспечения обратной совместимости. Поэтому, если вы не поддерживаете клиент на основе C, используя DB-Library, я бы не слишком беспокоился об этом sql"для пункта".

другие источники

еще одно наблюдение

курсоры, объявленные с for BROWSE, должны ждать незафиксированных изменений (сделано кем угодно, включая владельца курсора) только во время открытия Операции перемещения курсора. После открытия курсора последующие изменения не выполняются курсор подождать. При повторном открытии курсора его можно заблокировать незафиксированных изменений. src


добавление для просмотра инструкции SQL SELECT или использование SET NO_BROWSETABLE ON в соединении SQL Server может потребоваться для получения более подробной информации о схеме.

Это может быть полезно, если приложение взаимодействует прямо или косвенно через слой ODBC с SQL Server, потому что некоторые сведения, возвращаемые функцией ODBC SQLColAttribute вернет пустую строку, если SQL SELECT не добавит for BROWSE.

для например, если ваше приложение c++ использует libodbc++ и вы получаете результирующий набор из запроса SELECT * FROM A, B вы не сможете получить имена таблиц столбцов из объекта ResultSetMetaData. Однако при добавлении для просмотра имена таблиц будут заполняться соответствующим образом.