El procedimiento xp_cmdshell sirve para ejecutar comandos de DOS desde SQL Server.
Se preguntarán para que me sirve ejecutar comandos DOS desde Sql Server. Pues a veces es util crear directorios, leer su contenido o copiar archivos, cuando no se tiene acceso directo o de consola al servidor en el que está instalado Sql Server.
El comando viene desactivado porque representa un hueco de seguridad que puede ser usado en nuestra contra, pero hay veces que es útil saber de su existencia y usarlo para salir del paso.
Para habilitar su uso se requiere ser administrador de la base de datos. Estos son los comandos:
USE master;
GO
EXECUTE SP_CONFIGURE 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXECUTE SP_CONFIGURE 'xp_cmdshell', '1'
RECONFIGURE WITH OVERRIDE
GO
EXECUTE SP_CONFIGURE 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
GO
Para deshabilitarlo:
USE master;
GO
EXECUTE SP_CONFIGURE 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXECUTE SP_CONFIGURE 'xp_cmdshell', '0'
RECONFIGURE WITH OVERRIDE
GO
EXECUTE SP_CONFIGURE 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
GO
Para usarlo:
EXECUTE master.dbo.xp_cmdshell 'dir c:\'