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
- Copiar bases de datos entre dos servidores en SQL Server
- Vincular Active Directory con SQL Server
- Como configurar el envío de notificaciones por correo electrónico en SQL Server
- Permitir conexiones remotas en SQL Server
- Realizar un Backup mediante un Plan de Mantenimiento en SQL Server
- Plan de mantenimiento para la limpieza de backup en SQL Server
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.
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
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.
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.
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.
Gracias por tu tiempo Sergio.