Ejecutar un paquete SSIS propiedad de un usuario de dominio de SQL Server que se ejecuta en una cuenta de servicio local

10

Quiero ejecutar un paquete SSIS que contenga las tareas Transferir objetos de SQL Server. Los servidores involucrados están en el mismo dominio, pero los servicios de SQL Server se ejecutan en cuentas de servicio locales. Entonces el ambiente se ve así:

Dominio

Servidor 1

  • SQL Server ejecutándose en una cuenta local
  • En el sistema de archivos: paquete SSIS
  • En el Agente SQL Server: un trabajo

Servidor 2

  • SQL Server ejecutándose en una cuenta local

Para poder iniciar sesión en ambos servidores, he creado una cuenta de dominio para usar como cuenta de servicio. Cuando uso esta cuenta de dominio para iniciar sesión en el Servidor 1, y luego ejecuto el paquete desde el sistema de archivos, cada paso tiene éxito. Sin embargo, cuando intento agregar el trabajo a SQL Server me encuentro con uno de los siguientes problemas:

Situación 1. Dueño del trabajo: cuenta local; ejecute el paso SSIS como proxy de la cuenta de dominio . Cuando configuro el propietario del trabajo en una cuenta local, pero ejecuto el trabajo como proxy de la cuenta de dominio, el trabajo en sí se ejecutará con éxito, pero el paquete arroja errores como

La ejecución falló con el siguiente error: "El directorio 'LocalApplicationData' no existe".

Este error se puede solucionar creando un inicio de sesión con derechos de administrador para el usuario del dominio en el Servidor 1, pero obviamente esta no es una solución deseable. Agregar la cuenta a uno de los grupos de agentes / DTS de SQL Server tampoco funciona.

Situación 2. Propietario del trabajo: cuenta de dominio; ejecute el paso SSIS como proxy de la cuenta de dominio . Cuando configuro tanto el propietario del trabajo como el 'ejecutar como usuario' para el paso a la cuenta de dominio, el trabajo no se iniciará en absoluto, con el siguiente error:

No se puede determinar si el propietario (dominio \ usuario de dominio) del trabajo Job nametiene acceso al servidor (motivo: no se pudo obtener información sobre el grupo / usuario de Windows NT 'Dominio \ usuario de dominio', código de error 0x5. [SQLSTATE 42000] (Error 15404)) .

Creo que el último error se debe a que SQL Server se ejecuta en una cuenta local y no puede ver qué derechos tienen las cuentas de dominio.

¿Cuál es la forma correcta de ejecutar el trabajo? La situación 2 me parece más limpia, pero parece imposible porque SQL Server se ejecuta en una cuenta local. La situación 1 también funcionaría, pero no le va a dar derechos administrativos a un usuario de dominio en mi SQL Server.


ACTUALIZAR:

@JonSeigel y @ Mr.Brownstone:

Parece plausible que este problema se deba a la falta de permisos. Sin embargo, el error se trata de la inexistencia de 'LocalApplicationData', una de las carpetas que se genera para cada cuenta. Ya inicié sesión en el servidor con las credenciales con las que se ejecuta el paquete (creando un directorio de perfil) e intenté varias combinaciones de permisos para el directorio de perfil. Incluso cuando concedo manualmente casi todos los permisos en este directorio específico, aparece el error mencionado anteriormente.

Mientras investigaba un poco más, me encontré con un hilo del foro en http://www.sqlservercentral.com/Forums/Topic391332-148-1.aspx#bm391441 que es bastante similar, aunque sin solución tampoco.

vstrien
fuente
¿Hay alguna razón por la que no está utilizando una cuenta de dominio para servicios SQL?
Eric Higgins
Sí, pero no sé qué razón (supongo que algo con el ciclo DTAP y el dominio no está disponible en todas partes). De todos modos, es un entorno dado que no se me permite alterar.
vstrien
La situación n. ° 1 parece ser la respuesta. Creo que el mensaje de error que está recibiendo es del paquete. En otras palabras, el paquete se está ejecutando, pero una tarea dentro de él requiere más permisos de los que se otorgó a la cuenta de servicio. Es posible que no tenga que otorgar permisos de nivel de administrador a la cuenta para que tenga éxito (en su lugar, otorgue permisos granulares o cambie el proceso para que no necesite los permisos).
Jon Seigel
¿Se pueden agregar inicios de sesión de SQL (autenticación de SQL) al servidor SQL remoto (servidor 2)? Si tiene esa opción, puede usar el inicio de sesión SQL en la conexión SSIS utilizada para el destino. Eso significa que tendrá que usar una contraseña para cifrar el paquete, pero resolverá su problema.
Roi Gavish
@Justicator: Tal vez, como último recurso. Pero siempre que sea posible iniciar sesión en el dominio, prefiero no utilizar la autenticación de SQL.
vstrien

Respuestas:

5

Mi opinión personal es que la opción # 1 es el camino a seguir. Pero no veo la necesidad de que tenga que otorgar acceso de administrador local a la cuenta de dominio. Me parece que requiere acceso a ciertas carpetas y archivos, por lo que puede otorgarle al usuario de dominio acceso solo a los recursos que necesita para ejecutar el paquete con éxito. Esto se puede hacer a través del cuadro de diálogo de propiedades de archivo / carpeta y seleccione la pestaña de seguridad; no debería ser necesario configurarlo para cada archivo y carpeta, ya que podría establecer los permisos del directorio principal y configurarlos para anular las propiedades secundarias.

Espero que esto te ayude.

Mr.Brownstone
fuente