Execute o SQL Server 2012 como administrador e o problema desaparecerá.
Do SQL server 2012 eu tento fazer isso:
DECLARE @COMMAND nvarchar(4000)
SET @COMMAND = 'net stop <servicename>'
exec master.dbo.xp_cmdshell @COMMAND
Eu recebo o erro 5 do sistema e o acesso é negado como resposta
A conta de serviço (marcada com whoami
) é adicionada aos administradores, então, o que mais pode estar errado?
Execute o SQL Server 2012 como administrador e o problema desaparecerá.
xp_cmdshell
do SSMS Ajudei a solucionar um problema em que precisávamos conceder acesso de desenvolvedor de aplicativo para executar xp_cmdshell
de uma sessão do SSMS em vez de " Executar como " do trabalho do SQL Agent em um servidor de desenvolvimento não crítico sem torná-lo um sysadmin na instância do SQL Server.
Observação: a conta de usuário do domínio pode ser substituída pela conta do grupo de trabalho, pela conta da máquina local etc.
Importante: você precisa entender o risco de permitir que os usuários em seu ambiente executem comandos no nível do sistema operacional e só deve conceder esse nível de permissões a xp_cmdshell
àqueles que são confiáveis o suficiente este nível de segurança com o proxy .
Criei uma nova conta de usuário de domínio com uma senha strong e anotei o nome de usuário e a senha. Garantiu que a conta estava ativada e a senha foi configurada para nunca expirar.
Criamos um novo Login do SQL Server amarrado à nova conta de usuário de domínio que criamos.
Criado um novo credencial de proxy vinculada à conta de usuário do domínio.
EXEC sp_xp_cmdshell_proxy_account '<Domain>\<NewUser>', '<password>' -- you have to type actual password
Concedido que Login do SQL Server explícito EXECUTE
acesso ao proc armazenado estendido do sistema a partir do Master
DB denominado 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>]
Conceda à pessoa que use o EXECUTE AS
personificar a permissão para o novo login do SQL Server .
GRANT IMPERSONATE ON LOGIN::[<Domain>\<NewUser>] TO [<Domain>\<UserGrantingExecuteAsUser>]
Agora, execute o comando com o EXECUTE AS LOGIN e passe o comando net stop
para o procedimento xp_cmdshell
armazenado. A entidade de segurança, conforme listada na etapa 5 acima, no <Domain>\<UserGrantingExecuteAsUser>
, deve ser a da pessoa que está executando o SSMS como contexto de segurança para essa tarefa.
EXECUTE AS LOGIN = '<Domain>\<NewUser>' DECLARE @COMMAND nvarchar(4000) SET @COMMAND = 'net stop <servicename>' EXEC xp_cmdshell @COMMAND REVERT