powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN с таблицами на linked server выполняется по разному при разных permissions
4 сообщений из 4, страница 1 из 1
JOIN с таблицами на linked server выполняется по разному при разных permissions
    #32018914
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую население уважаемого форума

Вот такая ситуация, с которой совершенно неожиданно для себя столкнулся. Пока не нашел никакой информации по этому вопросу.
Имеется:
SELECT statement, в котором присутствует несколько таблиц с локального сервера, а также несколько таблиц с удаленного сервера. Запрос исполняется из Query Analyzer. Логины на обоих серверах одинаковые - имена и пароли. Во время соединения они имперсонифицируются напрямую, то есть если логин=xxx на локальном сервере, то на удаленном сервере он тоже будет xxx.
Теперь проблема.
Если логин xxx принадлежит к роли db_ddladmin, то execution plan показывает исполнение запроса как отдельный запрос на локальном сервере, отдельный запрос на удаленном сервере и дальше идет join через nested loops. В этом случае реально с удаленного сервера забирается всего 4 записи из примерно 1700000. Соответственно такой запрос возвращает результат почти мгновенно.
Если же логин xxx имеет только принадлежность к ролям public, db_datareader, db_datawriter, то по какой то непонятной для меня причине, execution plan показывает полное выкачивание всех 1700000 записей на локальный сервер и уже последующее соединение через Merge Join.
Что это такое? Какими именно правами должен обладать пользователь, чтобы с одной стороны не иметь прав изменения схемы базы данных, но с другой стороны, чтобы такие запросы оптимизировались правильно. Да и странно в общем, что права в этом случае влияют на исполнение запросов.

С уважением

Роман
...
Рейтинг: 0 / 0
JOIN с таблицами на linked server выполняется по разному при разных permissions
    #32018927
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На основе данной цитаты из BOL
"The SQL Server optimizer uses the distribution statistics in an attempt to reduce the amount of data that must be communicated between the OLE DB provider and SQL Server. For example, when performing a distributed join between TableA on the local server and TableB on a linked server, SQL Server can use the distribution statistics to determine which of these processes is most efficient:

1.Send the rows from TableA that match non-join predicates to the linked server and have the linked server perform the join.

2.Retrieve the rows from TableB that match non-join predicates to the local server and perform the join on the local server. "
выдвину следующее предположение .
Отправка данных на удаленный сервер при выполненни распределенного запроса по 1-му сценарию может подразумевать создание на этом удаленном сервере какой-то таблицы (временной?). Отсюда логично предположить, что если у удаленного логина нет прав на создание таблицы (а роли public, db_datareader, db_datawriter как раз такого права не меют), то планировщик в вашем случае и выбирает 2-ой тип исполнения запроса. В случае, если удаленый логин имеет право на создание объектов на удаленном сервере(db_ddladmin), планировщик выбирает 1-ый тип.
...
Рейтинг: 0 / 0
JOIN с таблицами на linked server выполняется по разному при разных permissions
    #32018929
Поможет явное указание хинта "INNER REMOTE JOIN"
...
Рейтинг: 0 / 0
JOIN с таблицами на linked server выполняется по разному при разных permissions
    #32019022
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытался надавать права на создание таблиц. Не помогает. REMOTE hint тоже не поможет, ибо там OUTER JOIN..... пока еще ничего не понятно.....
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN с таблицами на linked server выполняется по разному при разных permissions
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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