Uma chamada para a função de API AuthzInitializeContextFromSid falha durante a entrega de uma assinatura de email no SQL Server Reporting Services

Este artigo ajuda você a resolve o problema que você pode enfrentar com a chamada de função de AuthzInitializeContextFromSid API durante a entrega de uma assinatura de email.

Versão original do produto: SQL Server
Número de KB original: 842423

Resumo

Este artigo discute a causa e algumas possíveis resoluções para um problema que pode ocorrer em Microsoft SQL Server Reporting Services e Servidor de Relatórios do Power BI, em SQL Server Reporting Services quando você tenta criar e processar uma assinatura de email usando uma conta de usuário de domínio. O problema ocorre quando uma AuthzInitializeContextFromSid chamada de função de API no arquivo Authz.dll não é bem-sucedida.

Observação

Esse problema não ocorre no Windows Server 2008.

As resoluções discutidas neste artigo são as seguintes:

Como configurar o serviço Reporting Services Windows a ser executado em uma conta de usuário de domínio. Se isso não resolve o problema, você também deve usar um dos seguintes métodos:

  • Conceda a permissão de leitura para a conta de usuário de domínio em todas as contas de usuário e em todo o grupo do domínio.
  • Conceda a permissão de leitura para a conta de usuário de domínio especificamente em uma conta de usuário ou em um grupo do qual o usuário é membro.

Introdução

Este artigo discute um problema associado à chamada de função de AuthzInitializeContextFromSid API que ocorre durante a entrega de uma assinatura de email. Este artigo também discute algumas possíveis resoluções para o problema.

Informações detalhadas

Ao fornecer um email para uma assinatura de email, o programa Reporting Services pode chamar a função de AuthzInitializeContextFromSid API definida no arquivo Authz.dll. O programa Reporting Services pode chamar a função de AuthzInitializeContextFromSid API se uma das seguintes condições for verdadeira:

  • Um relatório está inserido no email.
  • Um relatório é anexado ao email.

Se você criar e processar a assinatura de email usando uma conta de usuário de domínio diferente da conta de logon do serviço do serviço Reporting Services Windows, a chamada de função de AuthzInitializeContextFromSid API poderá falhar.

Se a chamada de função falhar, talvez seja necessário configurar as configurações no domínio do computador que está executando Reporting Services para resolve o problema.

O programa Reporting Services chama a AuthzInitializeContextFromSid função de API para verificar se a conta de usuário usada para criar a assinatura ainda tem as permissões corretas para exibir o relatório. Essa verificação não é necessária quando o email contém apenas um link, uma URL, para o relatório porque Reporting Services executa a verificação de permissões do usuário quando o usuário tenta acessar o relatório usando a URL.

A AuthzInitializeContextFromSid chamada de função de API lê o atributo tokenGroupsGlobalAndUniversal (TGGAU) do SID (número de identificação de segurança) especificado na chamada de função de AuthzInitializeContextFromSid API para determinar as informações de associação do grupo do Windows para o usuário atual. Reporting Services chama o AuthzInitializeContextFromSid Função de API usando o contexto de segurança da conta de logon de serviço do serviço Reporting Services serviço Windows. Portanto, a conta de usuário que você usa para executar o serviço Reporting Services Windows deve ter permissões suficientes para ler o TGGAU atributo na conta de usuário usada para criar e processar as assinaturas de email.

Se o computador não estiver configurado corretamente para acessar e executar a chamada de função de AuthzInitializeContextFromSid API no arquivo Authz.dll, você poderá receber uma mensagem de erro. Além disso, uma mensagem de erro pode ser gravada no arquivo de log Reporting Services. Para determinar qual erro ocorreu, siga estas etapas:

  1. Abra o arquivo .log carimbo de data/hora ReportServerService_. Pesquise a palavra authz.

    Observação

    Por padrão, o arquivo ReportServerService_ carimbo de data/hora.log está localizado no <Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folder.

    No arquivo ReportServerService_ Carimbo de Data/Hora.log, você pode notar mensagens de erro semelhantes às seguintes:

    • Mensagem de erro 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Lançando Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: o Servidor de Relatório encontrou um erro de configuração; mais detalhes nos arquivos de log, AuthzInitializeContextFromSid: erro win32: 5; motivo possível – a conta de serviço não tem direitos de marcar SIDs do usuário de domínio.; Informações: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: o Servidor de Relatório encontrou um erro de configuração; mais detalhes nos arquivos de log.

    • Mensagem de erro 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Lançando Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: o Servidor de Relatório encontrou um erro de configuração; mais detalhes nos arquivos de log, AuthzInitializeContextFromSid: erro Win32: 1722; Informações: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: o Servidor de Relatório encontrou um erro de configuração; mais detalhes nos arquivos de log.

  2. Modifique a assinatura de email que causou a mensagem de erro. Não insira nem anexe um relatório no email. Use um link para o relatório. Depois de processar a assinatura modificada, se você não receber uma mensagem de erro, poderá confirmar se o erro ocorreu porque a chamada de função de AuthzInitializeContextFromSid API falhou.

Para resolver esse problema, use um dos métodos a seguir.

Você pode usar o Método 1 se as seguintes condições forem verdadeiras:

  • O serviço Reporting Services Windows está em execução na conta do Serviço de Rede.
  • Você não deseja alterar a conta em que o serviço Reporting Services Windows está em execução. Você pode usar o Método 2 para uma resolução geral. Se o Método 2 não resolve o problema, use o Método 3.

Método 1

  1. Adicione a conta do Windows ao grupo acesso de compatibilidade pré-Windows 2000 usando o snap-in Usuários e Computadores do Active Directory.
  2. Adicione a conta do Windows ao grupo windows Authorization Access usando o snap-in Usuários e Computadores do Active Directory.
  3. Reinicie o computador que está executando Reporting Services.

Observação

  • A conta do Windows na etapa 1 e na etapa 2 é a conta que você usa para executar Reporting Services.
  • Depois de adicionar a conta a esses grupos, é garantido que Reporting Services pode acessar o atributo TGGAU.
  • Esse método não exige que você modifique permissões em qualquer usuário ou grupo.

Método 2

Configure o serviço Reporting Services Windows a ser executado em uma conta de usuário de domínio.

Observação

Uma mensagem de erro pode ser gravada no log de rastreamento Reporting Services quando você tenta alterar a conta de usuário usada para executar o serviço Reporting Services Windows.

Método 3

Configure as configurações no domínio do computador que está executando Reporting Services. Para fazer isso, utilize um dos métodos seguintes.

Conceder a permissão de leitura em todas as contas de usuário e em todos os grupos no domínio

Você pode ser capaz de resolve o problema concedendo permissões de leitura para a conta de usuário que você usa para executar o serviço Reporting Services Windows para ler o TGGAU atributo em todas as contas de usuário e em todos os grupos no domínio. Para fazer isso, use as informações em uma das seções a seguir, dependendo do sistema operacional que você está usando.

Para um domínio do Microsoft Windows 2000

Se o domínio estiver em um modo de acesso de compatibilidade pré-Windows 2000, o grupo EVERYONE terá permissão de leitura no TGGAU atributo para toda a conta de usuário e todos os grupos. Portanto, a conta de usuário que você usa para executar o serviço Reporting Services Windows tem acesso ao TGGAU atributo na conta de usuário que Reporting Services usa para criar a assinatura de email.

Se o domínio não estiver em um modo de acesso de compatibilidade pré-Windows 2000, também conhecido como modo Nativo, você deverá conceder permissão de leitura para a conta de usuário usada para executar o serviço Reporting Services Windows para que ele possa ler o TGGAU atributo na conta de usuário que Reporting Services usa para criar a assinatura. Você pode criar um grupo local de domínio que simula o grupo de compatibilidade pré-Windows 2000, adicionar a conta de usuário que você usa para executar o serviço Reporting Services Windows a esse grupo e conceder permissões de leitura para o grupo em todas as contas de usuário. Para fazer isso, siga estas etapas:

Observação

Você deve ter permissões de administrador no domínio para seguir estas etapas.

  1. Clique em Iniciar, aponte para Programas, Ferramentas administrativas e clique em Usuários e computadores do Active Directory.
  2. Na janela Usuários e Computadores do Active Directory, no painel esquerdo, expanda o DomainName.
  3. Clique com o botão direito do mouse em Usuários, aponte para Novo e clique em Grupo.
  4. Na caixa de diálogo Novo Objeto – Grupo , digite MyAuthZGrp na caixa Nome do grupo .
  5. Em Escopo de grupo, selecione a opção Domínio local e clique em OK. O grupo MyAuthZGrp pode aparecer no painel direito.
  6. No painel esquerdo da janela Usuários e Computadores do Active Directory, clique com o botão direito do mouse na pasta Usuários e clique em Propriedades.
  7. Na caixa de diálogo Propriedades dos Usuários , clique na guia Segurança .
  8. Clique em Adicionar.
  9. Na caixa de diálogo Selecionar Usuários, Computadores ou Grupos , selecione o grupo que você criou na etapa 5.
  10. Clique em Adicionar e então clique em OK.
  11. Conceda permissão de leitura à conta de usuário selecionada na etapa 9.

Para um domínio do Microsoft Windows Server 2003

Se o domínio estiver em um nível funcional do Windows 2000, o grupo EVERYONE terá permissões de leitura para o atributo TGGAU de todas as contas de usuário e grupos. Portanto, a conta de serviço do Reporting Service tem as permissões corretas para a conta de usuário que criou a assinatura de email.

Se o domínio estiver em um nível funcional do Windows Server 2003, o grupo WAA (Grupo de Acesso à Autorização do Windows) terá permissões de leitura para o atributo TGGAU de todas as contas e grupos de usuário. Portanto, se você adicionar a conta de serviço Reporting Services ao grupo WAA, a conta de serviço Reporting Services terá permissões de leitura para o atributo TGGAU das contas de usuário que podem criar assinaturas de email.

Para adicionar a conta de serviço Reporting Services ao grupo WAA, siga estas etapas:

  1. No controlador de domínio, clique em Iniciar, aponte para Programas, aponte para Ferramentas Administrativas e clique em Usuários e Computadores do Active Directory.
  2. Na janela Usuários e Computadores do Active Directory, expanda DomainName e clique em Usuários ou em outra OU (unidade de organização apropriada).
  3. Clique duas vezes na conta de serviço Reporting Services.
  4. Na caixa de diálogo Propriedades , clique na guia Membro De .
  5. Na guia Membro Do , clique em Adicionar.
  6. Na caixa de diálogo Selecionar Grupos, digite Grupo de Acesso de Autorização do Windows em Inserir os nomes de objeto a serem selecionados e clique em OK.
  7. Reinicie o serviço Reporting Services.

Conceder permissões de leitura a uma conta de usuário ou grupo específico que possa criar uma assinatura Reporting Services

Talvez você não queira conceder permissões de leitura ao atributo TGGAU de todas as contas de usuário e grupos. Em vez disso, talvez você queira conceder permissões de leitura ao atributo TGGAU de uma conta de usuário ou grupo específico.

Observação

  • A conta de usuário que Reporting Services usa para executar a assinatura é a conta de usuário do Windows que faz logon no Gerenciador de Relatórios quando a assinatura é criada.
  • Essas etapas não serão necessárias se a conta de serviço Reporting Services estiver no grupo WAA.
  • Você precisa seguir essas etapas para cada conta de usuário ou grupo que possa criar uma assinatura de email no Reporting Services.

Para conceder permissões de leitura ao TGGAU atributo de uma conta de usuário ou grupo específico, siga estas etapas:

  1. Em um controlador de domínio, clique em Iniciar, aponte para Programas, aponte para Ferramentas Administrativas e clique em Usuários e Computadores do Active Directory.
  2. No menu Exibir , verifique se o item Recursos avançados está selecionado.
  3. Clique duas vezes na conta de usuário ou no grupo que pode criar uma assinatura Reporting Services.
  4. Na caixa de diálogo Propriedades, clique na guia Segurança.
  5. Na guia Segurança, clique em Adicionar.
  6. Na caixa de diálogo Selecionar Usuários, Computadores ou Grupos, digite a conta de serviço Reporting Services em Inserir os nomes de objeto a serem selecionados e clique em OK.
  7. Na caixa de diálogo Propriedades , clique na conta de usuário que você adicionou na etapa 6 em Grupo ou nomes de usuário.
  8. Em Permissões para Usuários, clique para selecionar a caixa Permitir marcar ao lado da permissão Ler e clique em OK.

Observação

As alterações podem não entrar em vigor imediatamente.

Como configurar as configurações de domínio no computador

A configuração do domínio depende do modo de operação do domínio microsoft Windows. Além disso, você deve ativar os recursos avançados no domínio do Windows. Para localizar o modo de operação de domínio no controlador de domínio e ativar os recursos avançados, siga estas etapas:

  1. Clique em Iniciar, aponte para Programas, Ferramentas administrativas e clique em Usuários e computadores do Active Directory.
  2. Na janela Usuários e Computadores do Active Directory, no painel esquerdo, clique com o botão direito do mouse no DomainName e clique em Propriedades.
  3. Na caixa de diálogoPropriedades do Domínio ****, consulte a caixa de texto Modo de operação domínio na guia Geral .

A caixa de texto modo de operação domínio mostra qual modo de operação de domínio o domínio está usando no momento. 4. No painel esquerdo da janela Usuários e Computadores do Active Directory, clique no DomainName. 5. No menu Exibir , clique em Recursos Avançados. Para obter mais informações sobre as APIs que exigem acesso à autorização em contas de usuário, consulte Alguns aplicativos e APIs exigem acesso a informações de autorização em objetos de conta.