sql-server - enable - xp_cmdshell sql server 2008 ejemplo
¿Por qué xp_cmdshell no funciona en SQL Server 2012? (2)
Posible duplicado:
Habilitar el servidor SQL ''xp_cmdshell''
Cuando ejecuto el comando xp_cmdshell
en SQL Server 2012, aparece el siguiente mensaje:
SQL Server bloqueó el acceso al procedimiento ''sys.xp_cmdshell'' del componente ''xp_cmdshell'' porque este componente está desactivado como parte de la configuración de seguridad de este servidor. Un administrador del sistema puede habilitar el uso de ''xp_cmdshell'' utilizando sp_configure. Para obtener más información sobre la habilitación de ''xp_cmdshell'', busque ''xp_cmdshell'' en los Libros en pantalla de SQL Server.
Pero, en SQL Server 2000 esta consulta se ejecuta con éxito.
Esto está deshabilitado para el servidor sql 2012. Pero puede ejecutar el siguiente comando en el servidor sql 2008 ..
EXEC sp_configure ''xp_cmdshell'', 1
RECONFIGURE
Esto se ha desactivado de forma predeterminada a partir de SQL Server 2005, cuando introdujeron la herramienta de configuración de área de superficie , en un esfuerzo por hacer que SQL Server sea más seguro de forma predeterminada. Esa herramienta se ha retirado desde entonces, pero aún se puede controlar el comportamiento utilizando sp_configure
. Un ejemplo se muestra en MSDN :
-- To allow advanced options to be changed.
EXEC sp_configure ''show advanced options'', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure ''xp_cmdshell'', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
(También publiqué sobre esto hace muchos años ).
La razón es que este es un potencial agujero de seguridad. Si permite que SQL Server ejecute xp_cmdshell
, entonces teóricamente puede enviar cualquier comando del sistema operativo, omitiendo toda la seguridad que creía tener. Esto es especialmente problemático cuando la cuenta de servicio de SQL Server y / o la cuenta de proxy se han elevado a sysadmin u otros niveles porque eso es más fácil que definir explícitamente solo las cosas exactas que deberían poder hacer.
En lugar de habilitarlo y deshabilitarlo para admitir la interacción de línea de comandos, una manera popular de exponer la funcionalidad del sistema operativo mientras aún se tiene cierto control sobre la seguridad es implementar la funcionalidad del nivel del sistema operativo que necesita utilizando SQL-CLR. Este es un buen punto de partida para acceder al sistema de archivos con CLR (sin embargo, si busca alrededor, encontrará enfoques mucho más modernos y exhaustivos).