Ejecutar DTS con un JOB de SQL (usuario sin roles)

29/08/2006 - 23:30 por Fernando Mosquera | Informe spam
Hola a todos!




Tengo el siguiente problema:




Tengo que ejecutar un DTS con un Job de SQL, le armo un steps del tipo
transact-SQL y corro el dtsrun con el xp_cmdshell, OK

Hasta ahí vamos bien...



Ahora, el Job lo tiene que ver un usuario en particular desde el enterprise
manager, este usuario no tiene el roll System Administrator. (por ende solo
ve los job's de los cuales es owner)



De la única forma que pude hacer que lo vea es poniéndolo como owner del
Job. (cosa que si lo pongo como owner del Job el mismo me falla por acceso
denegado para correr el xp_cmdshell, que es lógico).







Hay alguna otra forma de crear un Job para ejecutar un dts sin ser system
administrator?

(imagino que si el steps es un "Operating System Command (CmdExec) es lo
mismo que el xp_cmdshell desde un Transact-SQL Script, o me equivoco?)



Alguna forma de que el usuario sin rolles system administrator sin ser owner
del Job lo pueda ver?



Alguna idea?



Gracias a todos de antemano,

Saludos!

Preguntas similare

Leer las respuestas

#1 Eduardo Castro
29/08/2006 - 23:44 | Informe spam
Puedes crear una Scheduled Task de windows que ejecute el job por linea de
comandos, en el Scheduled Task puedes especificar una identidad de usuario
especifica

Eduardo Castro
Microsoft MVP
MCSE 2003+Security, MCDBA, MCSD .NET, CCNA

"Fernando Mosquera" wrote in message
news:
Hola a todos!




Tengo el siguiente problema:




Tengo que ejecutar un DTS con un Job de SQL, le armo un steps del tipo
transact-SQL y corro el dtsrun con el xp_cmdshell, OK

Hasta ahí vamos bien...



Ahora, el Job lo tiene que ver un usuario en particular desde el
enterprise
manager, este usuario no tiene el roll System Administrator. (por ende
solo
ve los job's de los cuales es owner)



De la única forma que pude hacer que lo vea es poniéndolo como owner del
Job. (cosa que si lo pongo como owner del Job el mismo me falla por acceso
denegado para correr el xp_cmdshell, que es lógico).







Hay alguna otra forma de crear un Job para ejecutar un dts sin ser system
administrator?

(imagino que si el steps es un "Operating System Command (CmdExec) es lo
mismo que el xp_cmdshell desde un Transact-SQL Script, o me equivoco?)



Alguna forma de que el usuario sin rolles system administrator sin ser
owner
del Job lo pueda ver?



Alguna idea?



Gracias a todos de antemano,

Saludos!



Respuesta Responder a este mensaje
#2 Fernando Mosquera
30/08/2006 - 00:04 | Informe spam
Eduardo, OK, es valido lo que me decís pero estaría perdiendo la
centralización de las tareas a través de SQL.



De hecho podría en ves de llamar al Job de SQL desde un task de Windows,
llamar directo al dtsrun.exe y así disparar el dts.



Gracias igual por tu respuesta.




"Eduardo Castro" wrote in message
news:
Puedes crear una Scheduled Task de windows que ejecute el job por linea de
comandos, en el Scheduled Task puedes especificar una identidad de usuario
especifica

Eduardo Castro
Microsoft MVP
MCSE 2003+Security, MCDBA, MCSD .NET, CCNA

"Fernando Mosquera" wrote in message
news:
> Hola a todos!
>
>
>
>
> Tengo el siguiente problema:
>
>
>
>
> Tengo que ejecutar un DTS con un Job de SQL, le armo un steps del tipo
> transact-SQL y corro el dtsrun con el xp_cmdshell, OK
>
> Hasta ahí vamos bien...
>
>
>
> Ahora, el Job lo tiene que ver un usuario en particular desde el
> enterprise
> manager, este usuario no tiene el roll System Administrator. (por ende
> solo
> ve los job's de los cuales es owner)
>
>
>
> De la única forma que pude hacer que lo vea es poniéndolo como owner del
> Job. (cosa que si lo pongo como owner del Job el mismo me falla por


acceso
> denegado para correr el xp_cmdshell, que es lógico).
>
>
>
>
>
>
>
> Hay alguna otra forma de crear un Job para ejecutar un dts sin ser


system
> administrator?
>
> (imagino que si el steps es un "Operating System Command (CmdExec) es lo
> mismo que el xp_cmdshell desde un Transact-SQL Script, o me equivoco?)
>
>
>
> Alguna forma de que el usuario sin rolles system administrator sin ser
> owner
> del Job lo pueda ver?
>
>
>
> Alguna idea?
>
>
>
> Gracias a todos de antemano,
>
> Saludos!
>
>
>


Respuesta Responder a este mensaje
#3 Alejandro Mesa
30/08/2006 - 16:50 | Informe spam
Fernando,

Que pasaria si otro usuario necesita ver el job tambien, le estarias
cambiando el "owner" a ese job constantemente.

Puedes crear un procedimiento que cree el job, lo ejecute y cuando este
termine que lo elimine.

- sp_add_job
- sp_add_jobstep
- sp_add_jobschedule
- etc.

Ahora, cualquiera de la opciones que escojas (cambiar owner del job o
ejecutar sp), para que ese usuario pueda ejecutar xp_cmdshell, este debe
pertenecer al role sysadmin o habercele extendido el permiso para ejecutarlo.
Si el servicio MSSQLServer esta usando una cuenta de windows que no pertenece
al grupo de administradores locales, entonces solo miembros de sysadmin
pueden ejecutar xp_cmdshell. Podemos hacer que usuarios que no pertenecen a
sysadmin puedan ejecutar un paso de tarea CmdExec si le decimos a SQL Server
que use una cuenta proxy para esos casos. Logico esta, que los permisos a esa
cuenta proxy deben ser lo menor posible para que no pueda hacer daños a nivel
de servidor. Esto explica el comentario que hicistes y que copio a
continuacion.

Ahora, el Job lo tiene que ver un usuario en particular desde el enterprise
manager, este usuario no tiene el roll System Administrator. (por ende solo
ve los job's de los cuales es owner)



Donde seteamos esa cuenta?

En el utilitario "Enterprise Manager", expande el servidor en cuestion,
expande "Management", click derecho sobre "SQL Server Agent", ve al tab "Job
system" y al final veras el bloque que dice "Non-sysAdmin job step proxy
account". Lee un poco mas sobre el tema en los libros en linea.


AMB

"Fernando Mosquera" wrote:

Hola a todos!




Tengo el siguiente problema:




Tengo que ejecutar un DTS con un Job de SQL, le armo un steps del tipo
transact-SQL y corro el dtsrun con el xp_cmdshell, OK

Hasta ahí vamos bien...



Ahora, el Job lo tiene que ver un usuario en particular desde el enterprise
manager, este usuario no tiene el roll System Administrator. (por ende solo
ve los job's de los cuales es owner)



De la única forma que pude hacer que lo vea es poniéndolo como owner del
Job. (cosa que si lo pongo como owner del Job el mismo me falla por acceso
denegado para correr el xp_cmdshell, que es lógico).







Hay alguna otra forma de crear un Job para ejecutar un dts sin ser system
administrator?

(imagino que si el steps es un "Operating System Command (CmdExec) es lo
mismo que el xp_cmdshell desde un Transact-SQL Script, o me equivoco?)



Alguna forma de que el usuario sin rolles system administrator sin ser owner
del Job lo pueda ver?



Alguna idea?



Gracias a todos de antemano,

Saludos!




Respuesta Responder a este mensaje
#4 Alejandro Mesa
30/08/2006 - 16:54 | Informe spam
Correccion,

Esto explica el comentario que hicistes y que copio a continuacion.

> Ahora, el Job lo tiene que ver un usuario en particular desde el enterprise
> manager, este usuario no tiene el roll System Administrator. (por ende solo
> ve los job's de los cuales es owner)



El comentario al que me referia es:

> De la única forma que pude hacer que lo vea es poniéndolo como owner del
> Job. (cosa que si lo pongo como owner del Job el mismo me falla por acceso
> denegado para correr el xp_cmdshell, que es lógico).




AMB


"Alejandro Mesa" wrote:

Fernando,

Que pasaria si otro usuario necesita ver el job tambien, le estarias
cambiando el "owner" a ese job constantemente.

Puedes crear un procedimiento que cree el job, lo ejecute y cuando este
termine que lo elimine.

- sp_add_job
- sp_add_jobstep
- sp_add_jobschedule
- etc.

Ahora, cualquiera de la opciones que escojas (cambiar owner del job o
ejecutar sp), para que ese usuario pueda ejecutar xp_cmdshell, este debe
pertenecer al role sysadmin o habercele extendido el permiso para ejecutarlo.
Si el servicio MSSQLServer esta usando una cuenta de windows que no pertenece
al grupo de administradores locales, entonces solo miembros de sysadmin
pueden ejecutar xp_cmdshell. Podemos hacer que usuarios que no pertenecen a
sysadmin puedan ejecutar un paso de tarea CmdExec si le decimos a SQL Server
que use una cuenta proxy para esos casos. Logico esta, que los permisos a esa
cuenta proxy deben ser lo menor posible para que no pueda hacer daños a nivel
de servidor. Esto explica el comentario que hicistes y que copio a
continuacion.

> Ahora, el Job lo tiene que ver un usuario en particular desde el enterprise
> manager, este usuario no tiene el roll System Administrator. (por ende solo
> ve los job's de los cuales es owner)

Donde seteamos esa cuenta?

En el utilitario "Enterprise Manager", expande el servidor en cuestion,
expande "Management", click derecho sobre "SQL Server Agent", ve al tab "Job
system" y al final veras el bloque que dice "Non-sysAdmin job step proxy
account". Lee un poco mas sobre el tema en los libros en linea.


AMB

"Fernando Mosquera" wrote:

> Hola a todos!
>
>
>
>
> Tengo el siguiente problema:
>
>
>
>
> Tengo que ejecutar un DTS con un Job de SQL, le armo un steps del tipo
> transact-SQL y corro el dtsrun con el xp_cmdshell, OK
>
> Hasta ahí vamos bien...
>
>
>
> Ahora, el Job lo tiene que ver un usuario en particular desde el enterprise
> manager, este usuario no tiene el roll System Administrator. (por ende solo
> ve los job's de los cuales es owner)
>
>
>
> De la única forma que pude hacer que lo vea es poniéndolo como owner del
> Job. (cosa que si lo pongo como owner del Job el mismo me falla por acceso
> denegado para correr el xp_cmdshell, que es lógico).
>
>
>
>
>
>
>
> Hay alguna otra forma de crear un Job para ejecutar un dts sin ser system
> administrator?
>
> (imagino que si el steps es un "Operating System Command (CmdExec) es lo
> mismo que el xp_cmdshell desde un Transact-SQL Script, o me equivoco?)
>
>
>
> Alguna forma de que el usuario sin rolles system administrator sin ser owner
> del Job lo pueda ver?
>
>
>
> Alguna idea?
>
>
>
> Gracias a todos de antemano,
>
> Saludos!
>
>
>
>
Respuesta Responder a este mensaje
#5 Fernando Mosquera
30/08/2006 - 22:14 | Informe spam
Gracias Alejandro, creo que la solución seria poner un "Non-SysAdmin Job
step proxy account".



Puntualmente cuando lo quiero configurar me da el error:



Unable to set the SQL Agent proxy account becouse of the reason listed
below.

'Error executing extended stored procedure: Specified user can not login'



Te cuento que el servicio de "SQL Server Agent" lo tengo iniciado con un
usuario de red, administrador local del servidor.



Probé poner como usuario para el proxy varios usuarios, de red con login en
SQL como sysadmin, el mismo que usa el SQL agent, etc. y me sigue dando el
error mencionado anteriormente..



Tendrás idea en que estoy metiendo la pata?

Gracias,

Saludos.



Fernando.

-

"Alejandro Mesa" wrote in message
news:
Correccion,

> Esto explica el comentario que hicistes y que copio a continuacion.
>
> > Ahora, el Job lo tiene que ver un usuario en particular desde el


enterprise
> > manager, este usuario no tiene el roll System Administrator. (por ende


solo
> > ve los job's de los cuales es owner)

El comentario al que me referia es:

> > De la única forma que pude hacer que lo vea es poniéndolo como owner


del
> > Job. (cosa que si lo pongo como owner del Job el mismo me falla por


acceso
> > denegado para correr el xp_cmdshell, que es lógico).


AMB


"Alejandro Mesa" wrote:

> Fernando,
>
> Que pasaria si otro usuario necesita ver el job tambien, le estarias
> cambiando el "owner" a ese job constantemente.
>
> Puedes crear un procedimiento que cree el job, lo ejecute y cuando este
> termine que lo elimine.
>
> - sp_add_job
> - sp_add_jobstep
> - sp_add_jobschedule
> - etc.
>
> Ahora, cualquiera de la opciones que escojas (cambiar owner del job o
> ejecutar sp), para que ese usuario pueda ejecutar xp_cmdshell, este debe
> pertenecer al role sysadmin o habercele extendido el permiso para


ejecutarlo.
> Si el servicio MSSQLServer esta usando una cuenta de windows que no


pertenece
> al grupo de administradores locales, entonces solo miembros de sysadmin
> pueden ejecutar xp_cmdshell. Podemos hacer que usuarios que no


pertenecen a
> sysadmin puedan ejecutar un paso de tarea CmdExec si le decimos a SQL


Server
> que use una cuenta proxy para esos casos. Logico esta, que los permisos


a esa
> cuenta proxy deben ser lo menor posible para que no pueda hacer daños a


nivel
> de servidor. Esto explica el comentario que hicistes y que copio a
> continuacion.
>
> > Ahora, el Job lo tiene que ver un usuario en particular desde el


enterprise
> > manager, este usuario no tiene el roll System Administrator. (por ende


solo
> > ve los job's de los cuales es owner)
>
> Donde seteamos esa cuenta?
>
> En el utilitario "Enterprise Manager", expande el servidor en cuestion,
> expande "Management", click derecho sobre "SQL Server Agent", ve al tab


"Job
> system" y al final veras el bloque que dice "Non-sysAdmin job step proxy
> account". Lee un poco mas sobre el tema en los libros en linea.
>
>
> AMB
>
> "Fernando Mosquera" wrote:
>
> > Hola a todos!
> >
> >
> >
> >
> > Tengo el siguiente problema:
> >
> >
> >
> >
> > Tengo que ejecutar un DTS con un Job de SQL, le armo un steps del tipo
> > transact-SQL y corro el dtsrun con el xp_cmdshell, OK
> >
> > Hasta ahí vamos bien...
> >
> >
> >
> > Ahora, el Job lo tiene que ver un usuario en particular desde el


enterprise
> > manager, este usuario no tiene el roll System Administrator. (por ende


solo
> > ve los job's de los cuales es owner)
> >
> >
> >
> > De la única forma que pude hacer que lo vea es poniéndolo como owner


del
> > Job. (cosa que si lo pongo como owner del Job el mismo me falla por


acceso
> > denegado para correr el xp_cmdshell, que es lógico).
> >
> >
> >
> >
> >
> >
> >
> > Hay alguna otra forma de crear un Job para ejecutar un dts sin ser


system
> > administrator?
> >
> > (imagino que si el steps es un "Operating System Command (CmdExec) es


lo
> > mismo que el xp_cmdshell desde un Transact-SQL Script, o me equivoco?)
> >
> >
> >
> > Alguna forma de que el usuario sin rolles system administrator sin ser


owner
> > del Job lo pueda ver?
> >
> >
> >
> > Alguna idea?
> >
> >
> >
> > Gracias a todos de antemano,
> >
> > Saludos!
> >
> >
> >
> >
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida