Запустите SQL Server 2012 от имени администратора, и проблема исчезнет.
Чистая остановка <service> системная ошибка 5 доступ запрещен </service>
С SQL Server 2012 я пытаюсь сделать это:
DECLARE @COMMAND nvarchar(4000) SET @COMMAND = 'net stop <servicename>' exec master.dbo.xp_cmdshell @COMMAND
Я получаю системную ошибку 5 и доступ запрещен как ответ
Учетная запись службы (проверена с помощью whoami
) добавляется к администраторам, так что еще может быть не так?
2 ответа на вопрос
Разрешить пользователю, не являющемуся системным администратором, запускаться xp_cmdshell
из SSMS
Я помог устранить проблему, когда нам нужно было предоставить разработчику приложения доступ для выполнения xp_cmdshell
из сеанса SSMS, а не « Запускать как » из задания агента SQL на некритическом сервере разработки, не назначая его системным администратором в экземпляре SQL Server.
Что мы сделали
Примечание. Учетная запись пользователя домена может быть заменена учетной записью рабочей группы, учетной записью локального компьютера и т. Д.
Важное замечание: Вам необходимо понимать риск того, что пользователи в вашей среде могут выполнять команды уровня ОС, и вы должны предоставлять этот уровень разрешений xp_cmdshell
только тем, кто достаточно надежен с таким уровнем безопасности при использовании метода прокси .
Создал новую учетную запись пользователя домена с надежным паролем и принял к сведению имя пользователя и пароль. Убедитесь, что учетная запись была включена, и пароль был установлен, чтобы никогда не истек.
Создано новое имя входа SQL Server, привязанное к новой учетной записи пользователя домена, которую мы создали.
Созданы новые учетные данные прокси, привязанные к учетной записи пользователя домена.
EXEC sp_xp_cmdshell_proxy_account '<Domain>\<NewUser>', '<password>' -- you have to type actual password
Предполагается, что SQL Server Login явный
EXECUTE
доступ к системе расширенного хранимого процесса изMaster
БД по имениsys.xp_cmdshell
.--see who all has execute access to xp_cmdshell Use master EXEC sp_helprotect 'xp_cmdshell' -- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1 RECONFIGURE GO -- Enable the xp_cmdshell procedure EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE GO -- Grant execute permissions to account GRANT EXECUTE ON xp_cmdshell TO [<Domain>\<NewUser>]
Предоставьте человеку, использующему
EXECUTE AS
олицетворение, разрешение на новый вход в систему SQL Server .GRANT IMPERSONATE ON LOGIN::[<Domain>\<NewUser>] TO [<Domain>\<UserGrantingExecuteAsUser>]
Теперь запустите команду с EXECUTE AS LOGIN и передайте
net stop
командуxp_cmdshell
хранимой процедуре. В<Domain>\<UserGrantingExecuteAsUser>
качестве контекста безопасности для этой задачи в качестве контекста безопасности должен быть указан участник безопасности, указанный на шаге 5 выше .EXECUTE AS LOGIN = '<Domain>\<NewUser>' DECLARE @COMMAND nvarchar(4000) SET @COMMAND = 'net stop <servicename>' EXEC xp_cmdshell @COMMAND REVERT
Дополнительные ресурсы
Похожие вопросы
-
2
.profile в Mac OS X?
-
6
Какие функции Zsh вы используете?
-
5
Прозрачная командная строка в Vista?
-
-
4
Используйте портфель Windows из командной строки
-
4
Почему некоторые команды не существуют?
-
11
Есть ли простой способ разделить mp3 файлы?
-
2
Как я могу получить OSX Terminal.app для открытия полноэкранного режима, а не каскадного?
-
4
Синхронизация удаленных папок в Linux
-
6
Полноэкранная командная строка или замена Vista
-
6
Хорошее руководство по PowerShell, начало работы с более продвинутым использованием