xp_cmdshell habilitar enable ejemplo activate sql-server-2008

sql server 2008 - enable - Habilitar el servidor SQL ''xp_cmdshell''



xp_cmdshell sql server 2008 ejemplo (6)

Quiero ejecutar EXEC master..xp_cmdshell @bcpquery

Pero recibo el siguiente error:

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'', consulte "Configuración de área de superficie" en los Libros en pantalla de SQL Server.

¿Hay alguna forma de activar esto o ejecutar algo antes de habilitar la función?

¿Cómo resolverlo?


Como se detalla en otras respuestas, el truco (en SQL 2005 o posterior) es cambiar la configuración de configuración global para show advanced options y xp_cmdshell a 1 , en ese orden.

Además, si desea conservar los valores anteriores, puede leerlos desde sys.configurations primero y luego aplicarlos en orden inverso al final. También podemos evitar llamadas de reconfigure innecesarias:

declare @prevAdvancedOptions int declare @prevXpCmdshell int select @prevAdvancedOptions = cast(value_in_use as int) from sys.configurations where name = ''show advanced options'' select @prevXpCmdshell = cast(value_in_use as int) from sys.configurations where name = ''xp_cmdshell'' if (@prevAdvancedOptions = 0) begin exec sp_configure ''show advanced options'', 1 reconfigure end if (@prevXpCmdshell = 0) begin exec sp_configure ''xp_cmdshell'', 1 reconfigure end /* do work */ if (@prevXpCmdshell = 0) begin exec sp_configure ''xp_cmdshell'', 0 reconfigure end if (@prevAdvancedOptions = 0) begin exec sp_configure ''show advanced options'', 0 reconfigure end

Tenga en cuenta que esto depende de SQL Server versión 2005 o posterior (la pregunta original era para 2008).


Haga clic derecho en el servidor -> Facetas -> Configuración de área de superficie -> XPCmshellEnbled -> true


Necesitas habilitarlo. Consulte la sección Permiso de los documentos de xp_cmdshell MSDN :

http://msdn.microsoft.com/en-us/library/ms190693.aspx :

-- 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


Puedes hacerlo usando SQLcmd. has corrido siguiendo el comando.


Si bien la respuesta aceptada funcionará la mayoría de las veces, he encontrado (todavía no sé por qué) algunos casos que sí lo hacen. Una ligera modificación de la consulta al usar WITH OVERRIDE RECONFIGURE en RECONFIGURE brinda la solución

Use Master GO EXEC master.dbo.sp_configure ''show advanced options'', 1 RECONFIGURE WITH OVERRIDE GO EXEC master.dbo.sp_configure ''xp_cmdshell'', 1 RECONFIGURE WITH OVERRIDE GO

El resultado esperado es

La opción de configuración ''mostrar opciones avanzadas'' cambió de 0 a 1. Ejecute la instrucción RECONFIGURE para instalar.
La opción de configuración ''xp_cmdshell'' cambió de 0 a 1. Ejecute la instrucción RECONFIGURE para instalar.


También puede ocultar nuevamente la opción avanzada después de reconfigurar:

-- show advanced options EXEC sp_configure ''show advanced options'', 1 GO RECONFIGURE GO -- enable xp_cmdshell EXEC sp_configure ''xp_cmdshell'', 1 GO RECONFIGURE GO -- hide advanced options EXEC sp_configure ''show advanced options'', 0 GO RECONFIGURE GO