Выполнить sp_setnetname пользователем без прав администратора - PullRequest
0 голосов
/ 27 июня 2019

Мне нужно изменить IP-адрес связанного сервера. Я использую процедуру sp_setnetname для этого. У меня есть логин user1 с public ролью сервера. Попробуйте запустить такой код:

    EXECUTE AS USER = 'user2';
    EXEC ('sp_setnetname ''LinkedServerName'', ''' + 'SomeIp' + '''')
    REVERT;

где user2 имеет sysadmin роль сервера. Но я получаю ошибку:

Cannot execute as the database principal because the principal "user2" does not exist, this type of principal cannot be impersonated, or you do not have permission.

Помогите мне исправить эту ошибку или найти любой другой способ изменить ip для связанного сервера пользователем без прав администратора.

1 Ответ

0 голосов
/ 01 июля 2019

Хорошо, я решаю свою проблему следующим образом:

  1. Вход в систему User1 по-прежнему имеет общедоступную роль сервера.
  2. Логин User1 по-прежнему сопоставляется с пользователем базы данных User1.
  3. Добавить для входа User1 разрешение Alter any linked server.

Я надеюсь, что это помощь для кого-то такого я.

P.S. Спасибо @Jeroen Mostert за идею.

...