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

Вот такая ситуация, с которой совершенно неожиданно для себя столкнулся. Пока не нашел никакой информации по этому вопросу.
Имеется:
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
14.12.2001, 07:05
    #32018927
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с таблицами на linked server выполняется по разному при разных permissions
На основе данной цитаты из 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
14.12.2001, 07:12
    #32018929
JOIN с таблицами на linked server выполняется по разному при разных permissions
Поможет явное указание хинта "INNER REMOTE JOIN"
...
Рейтинг: 0 / 0
14.12.2001, 17:12
    #32019022
Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с таблицами на linked server выполняется по разному при разных permissions
Пытался надавать права на создание таблиц. Не помогает. REMOTE hint тоже не поможет, ибо там OUTER JOIN..... пока еще ничего не понятно.....
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN с таблицами на linked server выполняется по разному при разных permissions / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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