Se produce un error en una llamada a la función de API AuthzInitializeContextFromSid durante la entrega de una suscripción de correo electrónico en SQL Server Reporting Services.

Este artículo le ayuda a resolver el problema que puede experimentar con la llamada a la AuthzInitializeContextFromSid función de API durante la entrega de una suscripción de correo electrónico.

Versión del producto original: SQL Server
Número de KB original: 842423

Resumen

En este artículo se describe la causa y algunas posibles soluciones para un problema que puede producirse en Microsoft SQL Server Reporting Services y Power BI Report Server, en SQL Server Reporting Services al intentar crear y procesar una suscripción de correo electrónico mediante una cuenta de usuario de dominio. El problema se produce cuando una AuthzInitializeContextFromSid llamada de función de API en el archivo Authz.dll no se realiza correctamente.

Nota:

Este problema no se produce en Windows Server 2008.

Las resoluciones que se describen en este artículo son las siguientes:

Cómo configurar el servicio de Windows de Reporting Services para que se ejecute en una cuenta de usuario de dominio. Si esto no resuelve el problema, también debe usar uno de los métodos siguientes:

  • Conceda el permiso de lectura para la cuenta de usuario de dominio en todas las cuentas de usuario y en todo el grupo del dominio.
  • Conceda el permiso de lectura para la cuenta de usuario de dominio específicamente en una cuenta de usuario o en un grupo al que pertenece el usuario.

Introducción

En este artículo se describe un problema asociado a la llamada a la AuthzInitializeContextFromSid función de API que se produce durante la entrega de una suscripción de correo electrónico. En este artículo también se describen algunas posibles soluciones para el problema.

Información detallada

Al entregar un correo electrónico para una suscripción de correo electrónico, el programa Reporting Services puede llamar a la AuthzInitializeContextFromSid función de API definida en el archivo Authz.dll. El programa Reporting Services puede llamar a la AuthzInitializeContextFromSid función de API si se cumple una de las condiciones siguientes:

  • Un informe se inserta en el correo electrónico.
  • Se adjunta un informe al correo electrónico.

Si crea y procesa la suscripción de correo electrónico mediante una cuenta de usuario de dominio diferente de la cuenta de inicio de sesión de servicio del servicio de Windows reporting Services, es posible que se produzca un error en la llamada a la AuthzInitializeContextFromSid función de API.

Si se produce un error en la llamada de función, es posible que tenga que configurar las opciones en el dominio del equipo que ejecuta Reporting Services para resolver el problema.

El programa Reporting Services llama a la AuthzInitializeContextFromSid función de API para comprobar si la cuenta de usuario que se usó para crear la suscripción todavía tiene los permisos correctos para ver el informe. Esta comprobación no es necesaria cuando el correo electrónico contiene solo un vínculo, una dirección URL, al informe porque Reporting Services realiza la comprobación de permisos de usuario cuando el usuario intenta acceder al informe mediante la dirección URL.

La AuthzInitializeContextFromSid llamada a la función de API lee el atributo tokenGroupsGlobalAndUniversal (TGGAU) del número de identificación de seguridad (SID) especificado en la llamada a la AuthzInitializeContextFromSid función de API para determinar la información de pertenencia a grupos de Windows para el usuario actual. Reporting Services llama a la AuthzInitializeContextFromSid función de API mediante el contexto de seguridad de la cuenta de inicio de sesión del servicio de Windows de Reporting Services. Por lo tanto, la cuenta de usuario que usa para ejecutar el servicio windows de Reporting Services debe tener permisos suficientes para leer el TGGAU atributo en la cuenta de usuario que se usa para crear y procesar las suscripciones de correo electrónico.

Si el equipo no está configurado correctamente para acceder y ejecutar la llamada a la AuthzInitializeContextFromSid función de API en el archivo Authz.dll, puede recibir un mensaje de error. Además, se puede escribir un mensaje de error en el archivo de registro de Reporting Services. Para determinar qué error se produjo, siga estos pasos:

  1. Abra el archivo ReportServerService_ marca de tiempo.log. Busque la palabra authz.

    Nota:

    De forma predeterminada, el archivo ReportServerService_ marca de tiempo.log se encuentra en .<Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folder

    En el archivo ReportServerService_ marca de tiempo.log, es posible que observe mensajes de error similares a los siguientes:

    • Mensaje de error 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: The Report Server has encontrado un error de configuración; más detalles en los archivos de registro, AuthzInitializeContextFromSid: Error win32: 5; posible motivo: la cuenta de servicio no tiene derechos para comprobar los SID del usuario del dominio. Información: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: El servidor de informes ha encontrado un error de configuración; más detalles en los archivos de registro.

    • Mensaje de error 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: The Report Server has encontrado un error de configuración; más detalles en los archivos de registro, AuthzInitializeContextFromSid: Error win32: 1722; Información: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: El servidor de informes ha encontrado un error de configuración; más detalles en los archivos de registro.

  2. Modifique la suscripción de correo electrónico que provocó el mensaje de error. No inserte ni adjunte un informe en el correo electrónico. Use un vínculo al informe. Después de procesar la suscripción modificada, si no recibe un mensaje de error, puede confirmar que se produjo el error porque se produjo un error en la llamada a la AuthzInitializeContextFromSid función de API.

Para resolver el problema, use uno de los siguientes métodos.

Puede usar el método 1 si se cumplen las condiciones siguientes:

  • El servicio de Windows de Reporting Services se ejecuta en la cuenta de servicio de red.
  • No desea cambiar la cuenta en la que se ejecuta el servicio windows de Reporting Services. Puede usar el método 2 para una resolución general. Si el método 2 no resuelve el problema, use el método 3.

Método 1

  1. Agregue la cuenta de Windows al grupo Acceso de compatibilidad anterior a Windows 2000 mediante el complemento Usuarios y equipos de Active Directory.
  2. Agregue la cuenta de Windows al grupo Acceso de autorización de Windows mediante el complemento Usuarios y equipos de Active Directory.
  3. Reinicie el equipo que ejecuta Reporting Services.

Nota:

  • La cuenta de Windows del paso 1 y en el paso 2 es la cuenta que se usa para ejecutar Reporting Services.
  • Después de agregar la cuenta a estos grupos, se garantiza que Reporting Services pueda acceder al atributo TGGAU.
  • Este método no requiere que modifique permisos en ningún usuario o grupo.

Método 2

Configure el servicio de Windows de Reporting Services para que se ejecute en una cuenta de usuario de dominio.

Nota:

Es posible que se escriba un mensaje de error en el registro de seguimiento de Reporting Services al intentar cambiar la cuenta de usuario que se usa para ejecutar el servicio windows de Reporting Services.

Método 3

Configure los valores en el dominio del equipo que ejecuta Reporting Services. Para ello, use uno de los métodos siguientes.

Concesión del permiso de lectura en todas las cuentas de usuario y en todos los grupos del dominio

Puede resolver el problema concediéndole permisos de lectura para la cuenta de usuario que usa para ejecutar el servicio de Windows de Reporting Services para leer el TGGAU atributo en todas las cuentas de usuario y en todos los grupos del dominio. Para ello, use la información de una de las secciones siguientes, en función del sistema operativo que use.

Para un dominio de Microsoft Windows 2000

Si el dominio está en un modo de acceso de compatibilidad anterior a Windows 2000, el grupo TODOS tiene permiso de lectura en el TGGAU atributo para todas las cuentas de usuario y todos los grupos. Por lo tanto, la cuenta de usuario que usa para ejecutar el servicio de Windows de Reporting Services tiene acceso al TGGAU atributo de la cuenta de usuario que Reporting Services usa para crear la suscripción de correo electrónico.

Si el dominio no está en un modo de acceso de compatibilidad anterior a Windows 2000, también conocido como modo nativo, debe conceder permiso de lectura para la cuenta de usuario que se usa para ejecutar el servicio windows de Reporting Services para que pueda leer el TGGAU atributo en la cuenta de usuario que Reporting Services usa para crear la suscripción. Puede crear un grupo local de dominio que simula el grupo de compatibilidad anterior a Windows 2000, agregar la cuenta de usuario que usa para ejecutar el servicio windows de Reporting Services en este grupo y, a continuación, conceder permisos de lectura para el grupo en todas las cuentas de usuario. Para ello, siga estos pasos:

Nota:

Debe tener permisos de administrador en el dominio para seguir estos pasos.

  1. Haga clic en Inicio, apunte a Programas, apunte a Herramientas administrativas y, a continuación, haga clic en Usuarios y equipos de Active Directory.
  2. En la ventana Usuarios y equipos de Active Directory, en el panel izquierdo, expanda DomainName.
  3. Haga clic con el botón derecho en Usuarios, seleccione Nuevoy, a continuación, haga clic en Grupo.
  4. En el cuadro de diálogo Nuevo objeto - Grupo, escriba MyAuthZGrp en el cuadro Nombre del grupo.
  5. En Ámbito de grupo, seleccione la opción local Dominio y, a continuación, haga clic en Aceptar. El grupo MyAuthZGrp puede aparecer en el panel derecho.
  6. En el panel izquierdo de la ventana Usuarios y equipos de Active Directory, haga clic con el botón derecho en la carpeta Usuarios y, a continuación, haga clic en Propiedades.
  7. En el cuadro de diálogo Propiedades de usuarios, haga clic en la pestaña Seguridad .
  8. Haz clic en Agregar.
  9. En el cuadro de diálogo Seleccionar usuarios, equipos o grupos , seleccione el grupo que creó en el paso 5.
  10. Haga clic en Agregary, a continuación, haga clic en Aceptar.
  11. Conceda permiso de lectura a la cuenta de usuario que seleccionó en el paso 9.

Para un dominio de Microsoft Windows Server 2003

Si el dominio está en un nivel funcional de Windows 2000, el grupo TODOS tiene permisos de lectura para el atributo TGGAU de todas las cuentas de usuario y grupos. Por lo tanto, la cuenta de servicio de Reporting Service tiene los permisos correctos para la cuenta de usuario que creó la suscripción de correo electrónico.

Si el dominio está en un nivel funcional de Windows Server 2003, el grupo de acceso de autorización de Windows (grupo WAA) tiene permisos de lectura para el atributo TGGAU de todas las cuentas de usuario y grupos. Por lo tanto, si agrega la cuenta de servicio de Reporting Services al grupo WAA, la cuenta de servicio de Reporting Services tiene permisos de lectura para el atributo TGGAU de las cuentas de usuario que pueden crear suscripciones de correo electrónico.

Para agregar la cuenta de servicio de Reporting Services al grupo WAA, siga estos pasos:

  1. En el controlador de dominio, haga clic en Inicio, seleccione Programas, Herramientas administrativas y, a continuación, haga clic en Usuarios y equipos de Active Directory.
  2. En la ventana Usuarios y equipos de Active Directory, expanda DomainName y, a continuación, haga clic en Usuarios u otra unidad organizativa adecuada (UO).
  3. Haga doble clic en la cuenta de servicio de Reporting Services.
  4. En el cuadro de diálogo Propiedades , haga clic en la pestaña Miembro de .
  5. En la pestaña Miembro de, haga clic en Agregar.
  6. En el cuadro de diálogo Seleccionar grupos , escriba Grupo de acceso de autorización de Windows en Escriba los nombres de objeto que desea seleccionar y, a continuación, haga clic en Aceptar.
  7. Reinicie el servicio Reporting Services .

Concesión de permisos de lectura a una cuenta o grupo de usuarios específicos que pueden crear una suscripción de Reporting Services

Es posible que no quiera conceder permisos de lectura al atributo TGGAU de todas las cuentas de usuario y grupos. En su lugar, puede conceder permisos de lectura al atributo TGGAU de una cuenta o grupo de usuarios específicos.

Nota:

  • La cuenta de usuario que Reporting Services usa para ejecutar la suscripción es la cuenta de usuario de Windows que inicia sesión en el Administrador de informes cuando se crea la suscripción.
  • Estos pasos no son necesarios si la cuenta de servicio de Reporting Services está en el grupo WAA.
  • Debe seguir estos pasos para cada cuenta de usuario o grupo que pueda crear una suscripción de correo electrónico en Reporting Services.

Para conceder permisos de lectura al TGGAU atributo de una cuenta o grupo de usuarios específicos, siga estos pasos:

  1. En un controlador de dominio, haga clic en Inicio, seleccione Programas, Herramientas administrativas y, a continuación, haga clic en Usuarios y equipos de Active Directory.
  2. En el menú Ver , asegúrese de que está seleccionado el elemento Características avanzadas .
  3. Haga doble clic en la cuenta de usuario o en el grupo que puede crear una suscripción de Reporting Services.
  4. En el cuadro de diálogo Propiedades , haga clic en la pestaña Seguridad .
  5. En la pestaña Seguridad, haga clic en Agregar.
  6. En el cuadro de diálogo Seleccionar usuarios, equipos o grupos , escriba la cuenta de servicio de Reporting Services en Escriba los nombres de objeto que desea seleccionar y, a continuación, haga clic en Aceptar.
  7. En el cuadro de diálogo Propiedades, haga clic en la cuenta de usuario que agregó en el paso 6 en Nombres de grupo o usuario.
  8. En Permisos paraUsuario, haga clic para activar la casilla Permitir junto al permiso Leer y, a continuación, haga clic en Aceptar.

Nota:

Es posible que los cambios no surtan efecto inmediatamente.

Cómo configurar las opciones de dominio en el equipo

La configuración del dominio depende del modo de operación del dominio de Microsoft Windows. Además, debe activar las características avanzadas en el dominio de Windows. Para buscar el modo de operación de dominio en el controlador de dominio y activar las características avanzadas, siga estos pasos:

  1. Haga clic en Inicio, apunte a Programas, apunte a Herramientas administrativas y, a continuación, haga clic en Usuarios y equipos de Active Directory.
  2. En la ventana Usuarios y equipos de Active Directory, en el panel izquierdo, haga clic con el botón derecho en DomainName y, a continuación, haga clic en Propiedades.
  3. En el cuadro de diálogo Propiedades de DomainName, vea el cuadro de texto Modo de operación de dominio en la pestaña General.

En el cuadro de texto Modo de operación dominio se muestra el modo de operación de dominio que usa actualmente el dominio. 4. En el panel izquierdo de la ventana de Usuarios y equipos de Active Directory, haga clic en domainName. 5. En el menú Ver , haga clic en Características avanzadas. Para obtener más información sobre las API que requieren acceso a la autorización en las cuentas de usuario, consulte Algunas aplicaciones y API requieren acceso a la información de autorización en objetos de cuenta.