2014-12-27 5 views
0

Извините, если это вопрос новичков.SQL Server: Linked Server Querying

Ситуация: У меня есть локальный SQL Server, связанный с основной SQL Server (причина, не имеют доступа к создавать представления/СФС/и т.д. на главном сервере)

Я определил views1, views2, views3 на локальном SQL Server, который полностью связывает таблицы/представления на главном сервере (нет локальных таблиц SQL Server)

Вопрос: как будет происходить соединение по view1 и или view3? То есть будут ли результаты каждого представления выведены на локальный сервер и объединены локально (хотя все ссылочные таблицы находятся на главном сервере)? Есть ли какие-либо гарантии так или иначе, ИЛИ это полностью зависит от оптимизатора?

Вопрос: если представление ссылается на UDF на локальном сервере, [как] будет ли процесс выше изменен?

Большое спасибо.

+2

Виды не материализуются (если вы не указали указатели на представление). Это не похоже на хороший игровой план для меня. – Paparazzi

+0

Описал, что я подразумеваю, материализуясь. Как и в, объединения выполняются локально после вытаскивания данных со связанного сервера. –

+0

Если вы хотите материализовать что-то другое, кроме материализованного, используйте другое слово. – Paparazzi

ответ

0

Если все таблицы, участвующие в запросе, находятся на одном удаленном сервере (и этот сервер является Microsoft SQL Server), операция JOIN должна выполняться удаленно. Чтобы узнать, выполняется ли он локально или удаленно, вы можете посмотреть план выполнения (он должен содержать только «Удаленный запрос», никаких подключений) или использовать Profiler на удаленном сервере (если у вас есть достаточные права).

Если операция JOIN выполняется локально, вы можете изменить план запроса, если используете подсказку REMOTE JOIN (хотя этот намек имеет смысл только в том случае, если одна из таблиц является локальной). Получение эффективных планов запросов зависит от наличия обновленной статистики, а в случае распределенного запроса (присоединения к локальной таблице к удаленной таблице) это также означает наличие достаточных прав для чтения удаленной статистики: «Если связанный сервер является экземпляром SQL Server, для получения всех доступных статистических данных пользователь должен владеть таблицей или быть членом фиксированной роли сервера sysadmin, роль фиксированной базы данных db_owner или роль фиксированной базы данных db_ddladmin на связанном сервере ».

+0

REMOTE JOIN hunt будет работать на локальном сервере UDF? Использование только серверов MsSql –

+0

Спасибо за подробности :) –

+0

Когда подсказка REMOTE используется в JOIN из двух локальных таблиц, она не имеет эффекта, кроме принудительного выполнения порядка объединений (как и любой другой намек JOIN), эффект, похожий на использование 'ОПЦИЯ (FORCE ORDER)' (поэтому, вероятно, он создает субоптимальный план), как предупреждает «Предупреждение: порядок соединения был применен, потому что используется локальный намек на соединение». –

Смежные вопросы