Хранимая процедура с EXECUTE AS не может запустить xp_cmdshell

У меня есть пользователь сервера sql, proxyAccount, который я настроил как xp_cmdshell_proxy_account.

В хранимой процедуре я использую xp_cmdshell, и когда я выполняю хранимую процедуру с этой учетной записью, все работает нормально.

Однако, если я добавлю:

WITH EXECUTE AS 'proxyAccount'

к хранимой процедуре, я получаю следующую ошибку при ее выполнении:

Информация об учетной записи прокси-сервера xp_cmdshell не может быть получена или недействительна. Убедитесь, что учетные данные '##xp_cmdshell_proxy_account##' существуют и содержат допустимую информацию.

В чем может быть проблема? Почему proxyAccount не может запустить xp_cmdshell, если установлено значение ВЫПОЛНЯТЬ КАК, но может запустить его в противном случае?


person ANisus    schedule 27.05.2013    source источник


Ответы (1)


Проблема была решена следующими действиями:

  1. Создание новой учетной записи, использующей проверку подлинности Windows (без проверки подлинности SQL Server)
  2. Установите для этой новой учетной записи прокси-сервер xp_cmdshell
  3. Предоставьте разрешение xp_cmdshell старому proxyAccount.
person ANisus    schedule 27.05.2013