Correr un DTS con xp_cmdshell sin ser sysadmin.

10/05/2007 - 23:56 por Marcelo Clavero | Informe spam
Estimados:

Intento correr un DTS mediante xp_cmdshell desde un Store Procedure que a su
vez es llamado de una página aspx.
Uso SQL 2000, Win2k3 Server (con un dominio creado), y FrameWork 2.

Si estoy logueado como administrador, todo anda de maravilla.
Si me logueo como cualquier usuario del dominio que no tenga privilegios de
administrador, entonces falla el cmdshell y envía el siguiente mensaje:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]xp_cmdshell failed to
execute, error 1813 occured while executing GetProxyAccount.

Estuve averiguando y encontré en este foro un mensaje de Gustavo Larriera
explicando que el error está relacionado con el procedimiento
xp_sqlagent_proxy_account, recomendando leer los Books. Los lei y explica
como configurar la cuenta de proxy del sql agent, para dar acceso a cuentas
que no sean del sysadmin. (me emocioné)
Lo hice (probé poniendo la cuenta del usuario que correrá el dts, y probé
poner la del propio administrador de windows) y la registró bien, pero
el error se mantiene.

- Aclaro que les di derecho de ejecución a los usuarios del dominio para los
dos SP mencionados.
- Lei que hay una cuenta de Windows llamada Proxy, que podría estar
relacionada, pero ni idea de como usarla y si servirá para este propósito
(esa cuenta no aparece en el Active directory). ¿?
- Tengo levantado el servicio de Sql Agent, aunque no estoy seguro si para
este caso es necesario tenerlo.

En fin, agoté mis recursos.
Desde ya gracias por cualquier ayuda que me puedan proporcionar.

Saludos.
Marcelo Clavero.

Preguntas similare

Leer las respuestas

#1 Marcelo Clavero
11/05/2007 - 02:21 | Informe spam
Luego de escribir este mail, encontré un artículo bien claro de como
hacerloy funcionó.
Si alguien tiene interés, pregunte que le paso como lo hice.
Abrazos y disculpen la molestia.
Marcelo

"Marcelo Clavero" escribió en el mensaje
news:
Estimados:

Intento correr un DTS mediante xp_cmdshell desde un Store Procedure que a
su vez es llamado de una página aspx.
Uso SQL 2000, Win2k3 Server (con un dominio creado), y FrameWork 2.

Si estoy logueado como administrador, todo anda de maravilla.
Si me logueo como cualquier usuario del dominio que no tenga privilegios
de administrador, entonces falla el cmdshell y envía el siguiente mensaje:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]xp_cmdshell failed to
execute, error 1813 occured while executing GetProxyAccount.

Estuve averiguando y encontré en este foro un mensaje de Gustavo Larriera
explicando que el error está relacionado con el procedimiento
xp_sqlagent_proxy_account, recomendando leer los Books. Los lei y explica
como configurar la cuenta de proxy del sql agent, para dar acceso a
cuentas que no sean del sysadmin. (me emocioné)
Lo hice (probé poniendo la cuenta del usuario que correrá el dts, y probé
poner la del propio administrador de windows) y la registró bien, pero
el error se mantiene.

- Aclaro que les di derecho de ejecución a los usuarios del dominio para
los dos SP mencionados.
- Lei que hay una cuenta de Windows llamada Proxy, que podría estar
relacionada, pero ni idea de como usarla y si servirá para este propósito
(esa cuenta no aparece en el Active directory). ¿?
- Tengo levantado el servicio de Sql Agent, aunque no estoy seguro si para
este caso es necesario tenerlo.

En fin, agoté mis recursos.
Desde ya gracias por cualquier ayuda que me puedan proporcionar.

Saludos.
Marcelo Clavero.

Respuesta Responder a este mensaje
#2 Salvador Ramos
11/05/2007 - 08:31 | Informe spam
Hola Marcelo,

Siempre es de agradecer que aunque sea uno mismo el que encuentre la
solución, a parte de indicarlo, que exponga dicha solución, ya que puede
ayudar a otros lectores del grupo.
Te agradecería que expusieses la solución para que quedase aquí reflejada.

Un saludo
Salvador Ramos

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm


"Marcelo Clavero" escribió en el mensaje
news:
Luego de escribir este mail, encontré un artículo bien claro de como
hacerloy funcionó.
Si alguien tiene interés, pregunte que le paso como lo hice.
Abrazos y disculpen la molestia.
Marcelo

"Marcelo Clavero" escribió en el mensaje
news:
Estimados:

Intento correr un DTS mediante xp_cmdshell desde un Store Procedure que a
su vez es llamado de una página aspx.
Uso SQL 2000, Win2k3 Server (con un dominio creado), y FrameWork 2.

Si estoy logueado como administrador, todo anda de maravilla.
Si me logueo como cualquier usuario del dominio que no tenga privilegios
de administrador, entonces falla el cmdshell y envía el siguiente
mensaje:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]xp_cmdshell failed to
execute, error 1813 occured while executing GetProxyAccount.

Estuve averiguando y encontré en este foro un mensaje de Gustavo Larriera
explicando que el error está relacionado con el procedimiento
xp_sqlagent_proxy_account, recomendando leer los Books. Los lei y explica
como configurar la cuenta de proxy del sql agent, para dar acceso a
cuentas que no sean del sysadmin. (me emocioné)
Lo hice (probé poniendo la cuenta del usuario que correrá el dts, y probé
poner la del propio administrador de windows) y la registró bien,
pero el error se mantiene.

- Aclaro que les di derecho de ejecución a los usuarios del dominio para
los dos SP mencionados.
- Lei que hay una cuenta de Windows llamada Proxy, que podría estar
relacionada, pero ni idea de como usarla y si servirá para este propósito
(esa cuenta no aparece en el Active directory). ¿?
- Tengo levantado el servicio de Sql Agent, aunque no estoy seguro si
para este caso es necesario tenerlo.

En fin, agoté mis recursos.
Desde ya gracias por cualquier ayuda que me puedan proporcionar.

Saludos.
Marcelo Clavero.





Respuesta Responder a este mensaje
#3 Marcelo Clavero
11/05/2007 - 19:47 | Informe spam
Salvador y demás foristas, aqui va lo que encontré:

Problema:
Un usuario que NO tiene derechos de sysadmin, NO puede ejecutar xp_cmdshell
(p.e. para correr un DTS desde un sp).

Solución:
Por defecto, el SQL solo permite correr xp_cmdshell a los que tengan
derechos de sysadmin.
La idea es crear una cuenta válida de windows con los derechos suficientes y
configurarla como cuenta proxy en el SQL Agent mediante el administrador
corporativo o con el proc: xp_sqlagent_proxy_account de la base Master.
Esa cuenta es la que será usada automaticamente para todos los usuarios
no-administradores cuando quieran ejecutar xp_cmdshell.

Nota: el modo por transacSQL está explicado en los Book Online, busquen
xp_cmshell y luego xp_sqlagent_proxy_account y alli veran como setear la
cuenta al proxy. Les paso la forma mediante administrador corporativo.

Método: Utilizando el Administrador corporativo de SQL Server

Primero elija una cuenta de Windows que usará como encargada de ejecutar los
comando xp_cmdshell. (puede ser administrador).
Luego haga lo siguiente:
1. Inicie Administrador corporativo de SQL Server.
2. Expande Microsoft SQL Server y a continuación, expande Grupo SQL Server
en Administrador corporativo de SQL Server.
3. Expanda la instancia de SQL Server al que desea configurar la cuenta de
proxy.
4. Expanda Administración, haga clic con el botón secundario en Agente SQL
Server y a continuación, haga clic en Propiedades.
5. En el cuadro de diálogo Propiedades del Agente SQL Server, haga clic en
la ficha Sistema de trabajo.
6. Bajo Non-SysAdmin job step proxy account, haga clic para desactivar la
casilla de verificación Only users with SysAdmin priviledges can execute
CmdExec and ActiveScripting job steps.
7. En el cuadro de diálogo SQL Server Agent proxy account, escriba el nombre
de cuenta de Windows en el cuadro Nombre de usuario.
8. En el cuadro Contraseña, escriba la contraseña de Windows.
9. En el cuadro Dominio, escriba el dominio del que es una miembro la cuenta
de Windows y a continuación, haga clic dos veces en Aceptar.

Agregue la cuenta al inicio de sesión de SQL Server
Para agregar un inicio de sesión de SQL Server a la cuenta en la que desea
conceder permisos para ejecutar el xp cmdshell sigue estos pasos:
1. Expanda Seguridad In SQL Server Enterpise Manager.
2. En el panel Logins, haga clic con el botón secundario en la cuenta de
inicio de sesión de SQL Server a la que desea conceder permisos y a
continuación, haga clic en Propiedades.
3. En el cuadro de diálogo Propiedades de inicio de sesión, haga clic en la
ficha Acceso a base de datos.
4. En la lista Specify which database can be accessed by this login, haga
clic para seleccionar la casilla de verificación Activar Permitir para la
base de datos master y a continuación, haga clic en Aceptar.
5. Expanda Databases, expanda patrón y a continuación, haga clic en Extend
Stored Procedures.
6. Busque en el xp cmdshell en procedimiento almacenados extendidos, a
continuación, haga clic con el botón secundario y luego en Propiedades.
7. En el cuadro de diálogo Extended Stored Procedure Properties, haga clic
en Permisos.
8. Haga clic aquí para seleccionar la casilla de verificación Activar EXEC
para la cuenta de inicio de sesión de SQL Server en la que desea conceder
permisos y a continuación, haga clic dos veces en Aceptar.

Saludos a Todos..
Marcelo Clavero.

"Salvador Ramos" escribió en el
mensaje news:
Hola Marcelo,

Siempre es de agradecer que aunque sea uno mismo el que encuentre la
solución, a parte de indicarlo, que exponga dicha solución, ya que puede
ayudar a otros lectores del grupo.
Te agradecería que expusieses la solución para que quedase aquí reflejada.

Un saludo
Salvador Ramos

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm


"Marcelo Clavero" escribió en el mensaje
news:
Luego de escribir este mail, encontré un artículo bien claro de como
hacerloy funcionó.
Si alguien tiene interés, pregunte que le paso como lo hice.
Abrazos y disculpen la molestia.
Marcelo

"Marcelo Clavero" escribió en el mensaje
news:
Estimados:

Intento correr un DTS mediante xp_cmdshell desde un Store Procedure que
a su vez es llamado de una página aspx.
Uso SQL 2000, Win2k3 Server (con un dominio creado), y FrameWork 2.

Si estoy logueado como administrador, todo anda de maravilla.
Si me logueo como cualquier usuario del dominio que no tenga privilegios
de administrador, entonces falla el cmdshell y envía el siguiente
mensaje:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]xp_cmdshell failed to
execute, error 1813 occured while executing GetProxyAccount.

Estuve averiguando y encontré en este foro un mensaje de Gustavo
Larriera explicando que el error está relacionado con el procedimiento
xp_sqlagent_proxy_account, recomendando leer los Books. Los lei y
explica como configurar la cuenta de proxy del sql agent, para dar
acceso a cuentas que no sean del sysadmin. (me emocioné)
Lo hice (probé poniendo la cuenta del usuario que correrá el dts, y
probé poner la del propio administrador de windows) y la registró bien,
pero el error se mantiene.

- Aclaro que les di derecho de ejecución a los usuarios del dominio para
los dos SP mencionados.
- Lei que hay una cuenta de Windows llamada Proxy, que podría estar
relacionada, pero ni idea de como usarla y si servirá para este
propósito (esa cuenta no aparece en el Active directory). ¿?
- Tengo levantado el servicio de Sql Agent, aunque no estoy seguro si
para este caso es necesario tenerlo.

En fin, agoté mis recursos.
Desde ya gracias por cualquier ayuda que me puedan proporcionar.

Saludos.
Marcelo Clavero.









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