Solución de problemas de errores en trabajos de Agente SQL Server con gMSAs

Se aplica a: SQL Server en Windows

Resumen

Este artículo le ayuda a solucionar los problemas de errores en los pasos de trabajos de Agente SQL Server que se producen después de cambiar la cuenta de servicio de Agente SQL Server por una cuenta de servicio administrada de grupo (gMSA). Abarca SQL Server Integration Services (SSIS), el plan de mantenimiento, la copia de seguridad, PowerShell y los pasos de trabajo de CmdExec que fallan porque la nueva identidad de ejecución no tiene los permisos de recurso compartido, NTFS, de proxy, de credencial o de paquete necesarios.

Antes de empezar, revise los requisitos previos y ejecute la lista rápida de comprobación para la validación en Solucionar problemas de instalación, inicio y autenticación de SQL Server con gMSA.

Síntomas

  • Agente SQL Server se inicia, pero se produce un error en los pasos de trabajo de SSIS, plan de mantenimiento, copia de seguridad, PowerShell o CmdExec.
  • Los pasos del trabajo comenzaron a generar errores después de cambiar la cuenta de servicio de Agente SQL Server a una gMSA.
  • Los errores identifican un componente que falta, un archivo, un proxy, una credencial, un recurso compartido o un permiso NTFS.

Causa

Un error en el paso del trabajo que sigue a un cambio de cuenta de servicio suele ser un problema de acceso para la nueva identidad, no un problema de administración de contraseñas de gMSA. Los pasos del trabajo que no usan un proxy se ejecutan con la cuenta de servicio de Agente SQL Server, así que otorga a la gMSA todos los permisos de recurso compartido, NTFS y de destino que tenía la cuenta anterior.

Diagnóstico de errores de trabajo de Agente SQL Server

  1. Identifique el subsistema del paso de trabajo que ha fallado y el primer error sobre el que se pueda actuar en el historial de trabajos.
  2. Confirme qué identidad ejecuta realmente el paso: la cuenta de servicio de Agente SQL Server o una cuenta de proxy. Para obtener más información, consulte Creación de un proxy de Agente SQL Server.
  3. Para las rutas de red y los recursos de destino, confirme que los permisos de uso compartido y NTFS se hayan concedido a la gMSA en el formato <DomainName>\<GmsaName>$, incluido el signo de dólar al final. Reemplace <DomainName> y <GmsaName> por los nombres de dominio y cuenta.
  4. Confirme que la gMSA tiene los permisos necesarios en el servicio de destino, como un destino de copia de seguridad, un servidor vinculado o un recurso compartido de archivos.

Resultado esperado: la identidad de ejecución tiene permiso explícito en cada recurso que usa el paso de trabajo.

Resolución de errores de trabajo de Agente SQL Server

Use la solución que coincida con el primer error accionable en el historial de trabajos.

Conceda permisos del recurso de destino a la identidad de ejecución

  1. Determine la cuenta con la que se ejecuta el paso del trabajo que ha fallado:

    • Un paso de trabajo de CmdExec que no especifica un proxy se ejecuta con la cuenta de servicio de Agente SQL Server.
    • Un paso de un trabajo que especifica un proxy de Agente SQL Server se ejecuta con la cuenta de Windows almacenada en la credencial del proxy.
    • Un paso de trabajo de Transact-SQL no usa un proxy de Agente SQL Server. Se ejecuta en el contexto de seguridad del propietario del trabajo. Si el propietario del trabajo es miembro del sysadmin rol fijo de servidor, el paso se ejecuta en la cuenta de servicio de Agente SQL Server a menos que se especifique otro usuario de base de datos.
  2. Otorgue los permisos necesarios a la identidad de ejecución:

    • Si el paso del trabajo se ejecuta con la cuenta de servicio de Agente SQL Server y esa cuenta es una gMSA, especifique el formato de identidad de cuenta de equipo de la gMSA, que incluye un signo de dólar al final ($). Por ejemplo: CONTOSO\SQLAgentSvc$.
    • Si el paso de trabajo usa un proxy, conceda permisos a la cuenta de Windows asociada a la credencial de proxy, no automáticamente a la cuenta de servicio de Agente SQL Server o gMSA.
    • Para un recurso compartido de archivos, conceda solo los permisos necesarios a la identidad de ejecución tanto en el recurso compartido SMB como en la carpeta NTFS subyacente.
  3. Para verificar la identidad y compartir el acceso, ejecute temporalmente los siguientes comandos en un paso de tarea de CmdExec que use la misma configuración de Ejecutar como que el paso que falla.

    whoami
    dir "\\FileServer\BackupShare"
    

    Resultado esperado: el whoami comando devuelve la identidad de ejecución esperada y el dir comando muestra el contenido del recurso compartido.

  4. Retire el paso temporal de diagnóstico después de realizar las pruebas.

Corregir el contexto de ejecución de la cuenta proxy, la credencial o el paso de trabajo de Agente SQL Server

Revise el paso del trabajo que ha fallado y compruebe su subsistema y la configuración Ejecutar como. Para un subsistema que admita servidores proxy, cree o use un proxy que cumpla las condiciones siguientes:

  • Hace referencia a una credencial para la cuenta de Windows necesaria.
  • Está habilitado para el subsistema de pasos de trabajo.
  • Está disponible para la cuenta de inicio de sesión o el rol de Agente SQL Server que posee o ejecuta el trabajo.
  • Usa una cuenta con los permisos necesarios para el paso del trabajo.

Asigne el proxy al paso de trabajo. La creación de un proxy no concede permisos de recursos a la cuenta almacenada en su credencial. Conceda esos permisos por separado y siga el principio de privilegios mínimos. Para obtener más información, consulte Creación de un proxy de Agente SQL Server.

Resolución de errores de acceso a paquetes o permisos de SSIS

Si se produce un error en un paso de trabajo de SSIS con errores de permiso o acceso a paquetes, compruebe que la cuenta que ejecuta el paso de trabajo de SSIS puede acceder a los siguientes recursos:

  • Ubicación del paquete SSIS.
  • Archivos de configuración y archivos de comandos, si se usan.
  • Archivos y carpetas a los que hace referencia el paquete.
  • Recursos compartidos de red.
  • Bases de datos y otros orígenes de datos.
  • Otros recursos externos requeridos por el paquete.

Si el paquete usa información confidencial protegida por la configuración de SSIS ProtectionLevel , compruebe que la cuenta de ejecución puede descifrar la información necesaria. Un cambio en la cuenta de ejecución de Agente SQL Server puede provocar un error en un paquete SSIS cuando la nueva cuenta no puede descifrar los secretos del paquete o no tiene permiso para acceder a un recurso externo. Para obtener más información, consulte El paquete SSIS no se ejecuta cuando se invoca desde un paso de un trabajo de Agente SQL Server.

Instalación o reparación de componentes que faltan confirmados

Instale o repare solo los componentes que faltan y corrija la compatibilidad del entorno de ejecución o la implementación de SSIS por separado del cambio de cuenta. Si el historial de trabajos identifica un componente que falta, compruebe que el componente está instalado y disponible para la identidad de ejecución antes de cambiar los permisos. Algunos ejemplos son:

  • Componentes de SSIS.
  • Módulos de PowerShell necesarios para el trabajo.
  • Scripts o ejecutables personalizados referenciados por los pasos de trabajo de CmdExec.
  • Proveedores necesarios u otros componentes en tiempo de ejecución.

Resuelva los errores de componente o tiempo de ejecución que faltan por separado de los errores de permisos. Una vez instalado o reparado el componente, vuelva a ejecutar el trabajo. Si sigue fallando, revise el primer error accionable en el historial de trabajos.

Recopilación de datos de diagnóstico

Si el paso de trabajo sigue fallando después de completar estos pasos, recopile el historial de trabajos con errores y otros datos de diagnóstico para el mismo intervalo de error. Para obtener la evidencia específica de gMSA y los registros de SQL Server estándar que se van a recopilar, consulte Recopilación de datos de diagnóstico en la introducción a la solución de problemas de gMSA. Use esos datos para continuar la investigación o para abrir un caso de soporte técnico.