Мы планируем изменить параметры сервера по умолчанию для экземпляра сервера SQL2k5, разрешив доступ к данным.
Причина в том, что мы хотим бежать SELECT * FROM OPENQUERY(LOCALSERVER, '...')
- подобные утверждения на сервере.
Каковы возможные недостатки включения опции сервера «доступ к данным» (псевдоним sys.servers.is_data_access_enabled
) для локального сервера (sys.servers.server_id = 0
)?
(Должна быть причина, по которой MS отключила эту опцию по умолчанию ...)
РЕДАКТИРОВАТЬ: оказывается, что я не первый, кто задает этот вопрос:
Вариант сервера ДОСТУП К ДАННЫМ, на мой взгляд, не очень хорошо документирован - в Books On Line сказано, что это свойство связанных серверов. Он вообще не упоминает, что вы действительно можете включить его на своем локальном сервере, чтобы разрешить вызовы OPENQUERY. Я заметил, что когда вы отключаете ДОСТУП К ДАННЫМ на связанном сервере, вы не можете запрашивать любую таблицу, расположенную на нем (я тестировал ее на своем сервере loopback), ни с помощью OPENQUERY, ни с четырехчастным соглашением об именах. Вы по-прежнему можете вызывать процедуры (с четырехчастным именованием), которые возвращают наборы строк. Что ж, интересный вопрос: почему он по умолчанию отключен на локальном сервере - я полагаю, чтобы отговорить пользователей от использования OPENQUERY против него.
Также кажется, что автор сообщения является пользователем Stack Overflow :-)
ОБНОВИТЬ: Другой технический блоггер столкнулся с той же проблемой в 2014 году. Также пользователь Stackoverflow.
Должна быть причина, по которой MS отключила эту опцию по умолчанию.
Некоторое время назад продукты Microsoft пытались быть «готовыми к безопасности». Это означает, что такие функции, как включение доступа к данным для связанного сервера, должны быть включены явно. Это предотвращает непреднамеренное включение пользователями (или администраторами) параметров, которые могут представлять угрозу безопасности.