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 AuthzInitializeContextFromSid llamada de 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 llamada a una AuthzInitializeContextFromSid 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 la Reporting Services servicio de Windows 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 del que el usuario es miembro.

Introducción

En este artículo se describe un problema asociado a la AuthzInitializeContextFromSid llamada de 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 de 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 del servicio Reporting Services servicio de Windows, la llamada a la AuthzInitializeContextFromSid función de API puede producir un error.

Si se produce un error en la llamada a la función, es posible que tenga que configurar los valores 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 sigue teniendo 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 Reporting Services servicio de Windows. Por lo tanto, la cuenta de usuario que usa para ejecutar el servicio de Windows 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, es posible que reciba 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 timestamp.log ReportServerService_. Busque la palabra authz.

    Nota:

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

    En el archivo ReportServerService_ Timestamp.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 de Win32: 5; posible motivo: la cuenta de servicio no tiene derechos para comprobar los SID de usuario de 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 de 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 produjo 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 el error se produjo 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 Reporting Services Windows se ejecuta en la cuenta de servicio de red.
  • No desea cambiar la cuenta en la que se ejecuta el servicio de Windows 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 de Usuarios y equipos de Active Directory.
  3. Reinicie el equipo que ejecuta Reporting Services.

Nota:

  • La cuenta de Windows en el 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 los permisos en ningún usuario o grupo.

Método 2

Configure la Reporting Services servicio de Windows 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 Reporting Services Windows.

Método 3

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

Conceder el 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 Reporting Services para leer el TGGAU atributo en todas las cuentas de usuario y 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 EVERYONE tiene permiso de lectura en el TGGAU atributo para toda la cuenta de usuario y todos los grupos. Por lo tanto, la cuenta de usuario que usa para ejecutar la Reporting Services servicio de Windows tiene acceso al atributo en la TGGAU 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 de Windows Reporting Services para que pueda leer el TGGAU atributo en la cuenta de usuario que Reporting Services usa para crear la suscripción. Puedes crear un grupo local de dominio que simule el grupo de compatibilidad anterior a Windows 2000, agregar la cuenta de usuario que usas para ejecutar el servicio de Windows Reporting Services a 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 Nuevo y, 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 Dominio local 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 los usuarios , haga clic en la pestaña Seguridad .
  8. Haga 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. c. Haga clic en Agregar y, después 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 EVERYONE 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 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 Reporting Services al grupo WAA, siga estos pasos:

  1. En el controlador de dominio, haga clic en Inicio, seleccione Programas, Herramientas administrativasy, a continuación, haga clic en Usuarios y equipos de Active Directory.
  2. En la ventana Usuarios y equipos de Active Directory, expanda DomainNamey, a continuación, haga clic en Usuarios u otra unidad organizativa (OU) adecuada.
  3. Haga doble clic en la cuenta de servicio 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 de Reporting Services.

Conceder permisos de lectura a una cuenta de usuario o grupo específico que pueda 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, es posible que desee conceder permisos de lectura al atributo TGGAU de una cuenta de usuario o grupo específico.

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 de usuario o grupo específico, siga estos pasos:

  1. En un controlador de dominio, haga clic en Inicio, seleccione Programas, Herramientas administrativasy, a continuación, haga clic en Usuarios y equipos de Active Directory.
  2. En el menú Ver , asegúrese de que el elemento Características avanzadas está seleccionado.
  3. Haga doble clic en la cuenta de usuario o en el grupo que puede crear una suscripción Reporting Services.
  4. En el cuadro de diálogo Propiedades, haga clic en la pestaña Seguridad.
  5. En la ficha Seguridad, haga clic en Agregar.
  6. En el cuadro de diálogo Seleccionar usuarios, equipos o grupos, escriba la cuenta de servicio 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 de usuario.
  8. En Permisos para el usuario, haga clic para activar la casilla Permitir situada junto al permiso Leer y, a continuación, haga clic en Aceptar.

Nota:

Es posible que los cambios no surtan efecto inmediatamente.

Configuración del 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álogoPropiedades de nombreDeDominio , vea el cuadro de texto Modo de operación de dominio en la pestaña General .

El cuadro de texto Modo de operación de dominio muestra el modo de operación de dominio que usa actualmente el dominio. 4. En el panel izquierdo de la ventana 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 cuentas de usuario, consulte Algunas aplicaciones y API requieren acceso a la información de autorización en objetos de cuenta.