xp_cmdshell durante el arranque del servidor

28/02/2005 - 15:38 por Ramon Moliner | Informe spam
Hola a todos,

Tenemos un procedimiento almacenado en la base de datos master que se
ejecuta cuando arranca
el servidor.(exec sp_procoption N'sp_ICarDMSStartup', N'startup', N'true').

Este procedimiento llama al xp_cmdshell para obtener cierta información del
disco duro.

INSERT #xpoutput EXEC master.dbo.xp_cmdshell "dir c:\dummy"

Cuando este procedimiento se ejecuta durante el arranque del servidor,
xp_cmdshell devulve vacio.
Cuando es ejecutado directamente desde el analizador de consultas (con login
"sa"), el procedimiento
devuelve la información correcta y todo va bien.

Ya sabemos que xp_cmdshell debe ejecutarse con permisos de sysadmin.
Pero ... ¿Alguien sabe que permisos se utilizan cuando un procedimiento se
ejecuta durante el arranque del servidor?

Nota:

SQL Server 2000 8.00.194 (Build 3790) en un Windows 2003
El servicio SQL Server service usa la "Cuenta local del sistema" en los
parametros de servicios NT.

Gracias por adelantado.

Ramon Moliner

Preguntas similare

Leer las respuestas

#1 Maxi
28/02/2005 - 16:26 | Informe spam
Hola, por logica estaria usando el perfil con que estas iniciando el
servicio de sqlserver, quizas lo tengas con LocalSystem y ahi este el
problema


Salu2
Maxi


"Ramon Moliner" escribió en el mensaje
news:
Hola a todos,

Tenemos un procedimiento almacenado en la base de datos master que se
ejecuta cuando arranca
el servidor.(exec sp_procoption N'sp_ICarDMSStartup', N'startup',
N'true').

Este procedimiento llama al xp_cmdshell para obtener cierta información
del disco duro.

INSERT #xpoutput EXEC master.dbo.xp_cmdshell "dir c:\dummy"

Cuando este procedimiento se ejecuta durante el arranque del servidor,
xp_cmdshell devulve vacio.
Cuando es ejecutado directamente desde el analizador de consultas (con
login "sa"), el procedimiento
devuelve la información correcta y todo va bien.

Ya sabemos que xp_cmdshell debe ejecutarse con permisos de sysadmin.
Pero ... ¿Alguien sabe que permisos se utilizan cuando un procedimiento se
ejecuta durante el arranque del servidor?

Nota:

SQL Server 2000 8.00.194 (Build 3790) en un Windows 2003
El servicio SQL Server service usa la "Cuenta local del sistema" en los
parametros de servicios NT.

Gracias por adelantado.

Ramon Moliner


Respuesta Responder a este mensaje
#2 Alejandro Mesa
28/02/2005 - 16:29 | Informe spam
Ramon,

Estan guardando el valor de retorno de xp_cmdshell?

Ejemplo:

declare @rv int

execute @rv = master..xp_cmdshell 'dir c:\dummy'
print @rv
go

Te pregunto porque si no es cero, entonces hubo un error en la sentencia
ejecutada.


AMB


"Ramon Moliner" wrote:

Hola a todos,

Tenemos un procedimiento almacenado en la base de datos master que se
ejecuta cuando arranca
el servidor.(exec sp_procoption N'sp_ICarDMSStartup', N'startup', N'true').

Este procedimiento llama al xp_cmdshell para obtener cierta información del
disco duro.

INSERT #xpoutput EXEC master.dbo.xp_cmdshell "dir c:\dummy"

Cuando este procedimiento se ejecuta durante el arranque del servidor,
xp_cmdshell devulve vacio.
Cuando es ejecutado directamente desde el analizador de consultas (con login
"sa"), el procedimiento
devuelve la información correcta y todo va bien.

Ya sabemos que xp_cmdshell debe ejecutarse con permisos de sysadmin.
Pero ... ¿Alguien sabe que permisos se utilizan cuando un procedimiento se
ejecuta durante el arranque del servidor?

Nota:

SQL Server 2000 8.00.194 (Build 3790) en un Windows 2003
El servicio SQL Server service usa la "Cuenta local del sistema" en los
parametros de servicios NT.

Gracias por adelantado.

Ramon Moliner



Respuesta Responder a este mensaje
#3 Ramon Moliner
28/02/2005 - 19:21 | Informe spam
Hola,

Gracias por vuestras rápidas respuestas.

He encontrado otro camino para resolver el problema.
Ahora el procedimiento se lanza desde un "trabajo" de SQL Agent con
programación igual a "Cuando se inicie el SQL Server"

Con este cambio, me funciona muy bien.

Gracias a todos.
Y felicidades por vuestro trabajo en el foro.

Ramon Moliner



"Ramon Moliner" escribió en el mensaje
news:
Hola a todos,

Tenemos un procedimiento almacenado en la base de datos master que se
ejecuta cuando arranca
el servidor.(exec sp_procoption N'sp_ICarDMSStartup', N'startup',
N'true').

Este procedimiento llama al xp_cmdshell para obtener cierta información
del disco duro.

INSERT #xpoutput EXEC master.dbo.xp_cmdshell "dir c:\dummy"

Cuando este procedimiento se ejecuta durante el arranque del servidor,
xp_cmdshell devulve vacio.
Cuando es ejecutado directamente desde el analizador de consultas (con
login "sa"), el procedimiento
devuelve la información correcta y todo va bien.

Ya sabemos que xp_cmdshell debe ejecutarse con permisos de sysadmin.
Pero ... ¿Alguien sabe que permisos se utilizan cuando un procedimiento se
ejecuta durante el arranque del servidor?

Nota:

SQL Server 2000 8.00.194 (Build 3790) en un Windows 2003
El servicio SQL Server service usa la "Cuenta local del sistema" en los
parametros de servicios NT.

Gracias por adelantado.

Ramon Moliner


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida