|
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
|
Traducción
Original
|
xp_cmdshell (Transact-SQL)
Importante
|
|---|
|
|
Cuenta de proxy xp_cmdshell
EXEC sp_xp_cmdshell_proxy_account 'SHIPPING\KobeR','sdfh%dkc93vcMt0'
-
Cree y personalice una cuenta de usuario local de Windows o una cuenta de dominio con los permisos mínimos que los procesos requieran. -
Utilice el procedimiento de sistema sp_xp_cmdshell_proxy_account para configurar xp_cmdshell de modo que use esa cuenta con permisos mínimos.
Nota
También puede configurar esta cuenta de proxy utilizando SQL Server Management Studio haciendo clic con el botón secundario en Propiedades en su nombre del servidor en el Explorador de objetos, y buscando en la pestaña Seguridad la sección Cuenta de proxy del servidor. -
En Management Studio, utilizando la base de datos master, ejecute la instrucción GRANT exec ON xp_cmdshell TO '<somelogin>' para proporcionar a usuarios concretos que no sean sysadmin la capacidad de ejecutar xp_cmdshell. El inicio de sesión especificado debe asignarse a un usuario en la base de datos master.
xp_cmdshell 'whoami.exe'
EXECUTE AS LOGIN = '<other_login>' ; GO xp_cmdshell 'whoami.exe' ; REVERT ;
A.Devolver una lista de archivos ejecutables
EXEC master..xp_cmdshell 'dir *.exe'
B.No devolver resultados
USE master;
EXEC xp_cmdshell 'copy c:\SQLbcks\AdvWorks.bck
\\server2\backups\SQLbcks, NO_OUTPUT';
GO
C.Utilizar el estado de retorno
DECLARE @result int EXEC @result = xp_cmdshell 'dir *.exe' IF (@result = 0) PRINT 'Success' ELSE PRINT 'Failure'
D.Escribir el contenido de variables en un archivo
DECLARE @cmd sysname, @var sysname SET @var = 'Hello world' SET @cmd = 'echo ' + @var + ' > var_out.txt' EXEC master..xp_cmdshell @cmd
E.Capturar el resultado de un comando en un archivo
DECLARE @cmd sysname, @var sysname SET @var = 'dir/p' SET @cmd = @var + ' > dir_out.txt' EXEC master..xp_cmdshell @cmd