SQL Server: Habilitar xp_cmdshell

En esta entrada voy a explicaros como podéis habilitar la funcionalidad xp_cmdshell en SQL Server.

En alguna ocasión es necesario ejecutar algún proceso externo desde SQL Server. Para estos casos Microsoft dispone de un procedimiento almacenado extendido llamado xp_cmdshell el cual nos permite ejecutar cualquier proceso mediante la línea de comandos, estos podemos incorporarlos a nuestros procedimientos almacenados, trabajos, etc…

Por defecto esta opción viene deshabilitada por lo que voy a explicaros que podéis hacer para habilitarla.

Requisitos

  • Servidor base de datos SQL Server 2008 R2 o superior.
  • Usuario de SQL con privilegios sysadmin.

Habilitar xp_cmdshell

Para empezar nos conectaremos mediante la aplicación Microsoft SQL Management Studio a nuestro motor de bases de datos utilizando una cuenta de usuario con privilegios sysadmin.

Una vez conectados tendremos que ejecutar el siguiente comando para habilitar xp_cmdshell.

--Activamos las opciones avanzadas requisito indispensable para activar xp_cmdshell
sp_configure 'show advanced options', '1'
--Aplicamos los cambios
RECONFIGURE
--Habilitamos xp_cmdshell
sp_configure 'xp_cmdshell', '1' 
--Aplicamos los cambios
RECONFIGURE

Y listo ya podemos empezar a ejecutar procesos mediante la línea de comandos.

Deshabilitar xp_cmdshell

Como buena práctica en materia de seguridad, es recomendable deshabilitar xp_cmdshell sino lo estamos utilizando.

Para deshabilitarlo simplemente nos conectaremos mediante la aplicación Microsoft SQL Management Studio a nuestro motor de bases de datos utilizando una cuenta de usuario con privilegios sysadmin y ejecutaremos lo siguiente.

--Activamos las opciones avanzadas requisito indispensable para activar xp_cmdshell
sp_configure 'show advanced options', '1'
--Aplicamos los cambios
RECONFIGURE
--Deshabilitamos xp_cmdshell
sp_configure 'xp_cmdshell', '0' 
--Aplicamos los cambios
RECONFIGURE

Con este sencillo comando habremos deshabilitado el comando xp_cmdshell.

Espero os haya servido de utilidad.

Entradas relacionadas

5 comentarios en «SQL Server: Habilitar xp_cmdshell»

  1. Buenas Tardes

    Por favor, podrias indicarme como saco un backup de una base de datos sql 2008 r2 a un dispositivo externo un (NAS).
    En espera de una respuesta positiva,
    Saludos

    Responder
    • Hola Mario,

      En esta entrada explico como realizar backup tanto para su almacenamiento en local como por red. Esta entrada aunque está orientada a SQL Server 2016 debe servirte también para SQL Server 2008 R2 ya que puede que cambien algunas pantallas pero las opciones serán las mismas.

      Saludos.

      Responder
  2. Hola Sergio. La instalacion que tengo, al ejecutar el comando «sp_configure» me aparece mensaje «command not found»… Tengo Debian GNU-Linux 2.6.32-5-686 2011… sabras cual es el comando similar o con el que podria abrir el permiso para modificar la longitud de un campo? Quiero ejecutar sp_configure «allow updates», 1 para abrir el permiso, pero me dice que no existe. Como puedo abrir ese permiso. Gracias.

    Responder
    • Hola Hector,

      Siento no poder ayudarte en esta ocasión ya que siempre he administrado servidores SQL bajo entornos Windows por lo que no sabría decirte una alternativa que te pueda funcionar en un SQL montado en Linux.

      A ver si alguna de las personas que me siguen lo sabe y puede ayudarte.

      Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.