SQL Выбор сервера из связанного сервера выдает ошибку, если у пользователя есть «запретить определение просмотра» - PullRequest
0 голосов
/ 07 мая 2020

У меня есть пользователи с разрешением datareader на моем sql, проблема в том, что я заметил, что пользователи часто выполняют «рыбные» запросы (они не знают, что именно нужно запрашивать, чтобы получить то, что вам нужно).

Это продакшн SQL, и мы зашли в тупик из-за этих пользователей. Пытаясь не нарушить их процесс, я применил «запретить определение представления для [пользователя]», чтобы они не могли видеть список таблиц, представление, хранимую процедуру, поэтому больше не нужно «ловить рыбу»

Это было отличное решение , он отлично работает, если вы подключаетесь напрямую к серверу SQL, вы можете запускать запросы (выбрать), но вы не можете видеть список таблиц.

Однако многие пользователи используют эту учетную запись для подключения к нашему SQL с использованием связанного сервера, и при выполнении запроса с использованием связанного сервера возникает ошибка:

SELECT TOP 100 * 
FROM [SERVERSQL].[DATABASE].dbo.[TABLE]

Msg 7314, уровень 16, состояние 1, строка 1
Поставщик OLE DB "SQLNCLI11" для связанного сервера "SERVER SQL" не содержит таблицы "" [DATABASE] "." Dbo "." [TABLE] "". Таблица либо не существует, либо текущий пользователь не имеет разрешений для этой таблицы.

Используется SQL Сервер версии 2014 (v12.0.2000.8) и 2016 (v13.0.5492.2) .

Как правильно скрыть таблицы, представления, хранимые процедуры и т. Д. c, но разрешить выбор и заставить его работать на связанном сервере?

Спасибо

...