Вызов функции API AuthzInitializeContextFromSid завершается сбоем во время доставки подписки по электронной почте в SQL Server Reporting Services

Эта статья поможет устранить проблему, которая может возникнуть при вызове AuthzInitializeContextFromSid функции API во время доставки подписки по электронной почте.

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 842423

Сводка

В этой статье рассматриваются причины и возможные способы решения проблемы, которая может возникнуть в Microsoft SQL Server Reporting Services и Сервер отчетов Power BI, в SQL Server Reporting Services при попытке создать и обработать подписку по электронной почте с помощью учетной записи пользователя домена. Проблема возникает, когда AuthzInitializeContextFromSid вызов функции API в файле Authz.dll не завершается успешно.

Примечание.

Эта проблема не возникает в Windows Server 2008.

В этой статье рассматриваются следующие решения:

Настройка Reporting Services службы Windows для запуска под учетной записью пользователя домена. Если проблема не устранена, необходимо также использовать один из следующих методов:

  • Предоставьте разрешение на чтение для учетной записи пользователя домена для всех учетных записей пользователей и всей группы домена.
  • Предоставьте разрешение на чтение для учетной записи пользователя домена, в частности для учетной записи пользователя или в группе, членом которую является пользователь.

Введение

В этой статье рассматривается проблема, связанная с вызовом AuthzInitializeContextFromSid функции API, который происходит во время доставки подписки по электронной почте. В этой статье также рассматриваются некоторые возможные решения проблемы.

Подробные сведения

При доставке электронной почты для подписки на электронную почту программа Reporting Services может вызвать AuthzInitializeContextFromSid функцию API, определенную в файле Authz.dll. Программа Reporting Services может вызвать функцию AuthzInitializeContextFromSid API, если выполняется одно из следующих условий:

  • Отчет внедряется в сообщение электронной почты.
  • Отчет вложен в сообщение электронной почты.

Если вы создаете и обрабатываете подписку по электронной почте с помощью учетной записи пользователя домена, отличной от учетной записи входа в службу Reporting Services Windows, AuthzInitializeContextFromSid вызов функции API может завершиться ошибкой.

Если вызов функции завершается сбоем, для устранения проблемы может потребоваться настроить параметры в домене компьютера, на котором выполняется Reporting Services.

Программа Reporting Services вызывает AuthzInitializeContextFromSid функцию API, чтобы проверить, имеет ли учетная запись пользователя, используемая для создания подписки, правильные разрешения для просмотра отчета. Эта проверка не требуется, если сообщение электронной почты содержит только ссылку( URL-адрес) на отчет, так как Reporting Services выполняет проверку разрешений пользователя, когда пользователь пытается получить доступ к отчету с помощью URL-адреса.

Вызов AuthzInitializeContextFromSid функции API считывает атрибут tokenGroupsGlobalAndUniversal (TGGAU) идентификационного номера безопасности (SID), указанного в вызове функции API, чтобы определить сведения о членстве в AuthzInitializeContextFromSid группе Windows для текущего пользователя. Reporting Services вызывает AuthzInitializeContextFromSid Функция API использует контекст безопасности учетной записи входа в службу Reporting Services Windows. Таким образом, учетная запись пользователя, используемая для запуска службы Reporting Services Windows, должна иметь достаточные разрешения для чтения TGGAU атрибута в учетной записи пользователя, которая используется для создания и обработки подписок электронной почты.

Если компьютер неправильно настроен для доступа и запуска AuthzInitializeContextFromSid вызова функции API в файле Authz.dll, может появиться сообщение об ошибке. Кроме того, в файл журнала Reporting Services может быть записано сообщение об ошибке. Чтобы определить, какая ошибка произошла, выполните следующие действия.

  1. Откройте файл метки времени ReportServerService_.log. Найдите слово authz.

    Примечание.

    По умолчанию файл метки времени ReportServerService_.log находится в <Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folder.

    В файле ReportServerService_ метка времени.log могут появиться сообщения об ошибках, похожие на следующие:

    • Сообщение об ошибке 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: На сервере отчетов произошла ошибка конфигурации; Дополнительные сведения в файлах журнала: ошибка AuthzInitializeContextFromSid: Win32: 5; возможная причина — учетная запись службы не имеет прав на проверка идентификаторы безопасности пользователя домена. Сведения: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: сервер отчетов обнаружил ошибку конфигурации; дополнительные сведения в файлах журнала.

    • Сообщение об ошибке 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: На сервере отчетов произошла ошибка конфигурации; дополнительные сведения в файлах журнала: ошибка AuthzInitializeContextFromSid: Win32: 1722; Сведения: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: сервер отчетов обнаружил ошибку конфигурации; дополнительные сведения в файлах журнала.

  2. Измените подписку по электронной почте, которая вызвала сообщение об ошибке. Не внедряйте и не вложите отчет в сообщение электронной почты. Используйте ссылку на отчет. После обработки измененной подписки, если вы не получили сообщение об ошибке, вы можете подтвердить, что ошибка произошла из-за AuthzInitializeContextFromSid сбоя вызова функции API.

Для решения этой проблемы воспользуйтесь одним из описанных ниже способов.

Метод 1 можно использовать, если выполняются следующие условия:

  • Служба Windows Reporting Services работает под учетной записью сетевой службы.
  • Вы не хотите изменять учетную запись, в которой работает Reporting Services служба Windows. Для общего разрешения можно использовать метод 2. Если метод 2 не устраняет проблему, используйте метод 3.

Способ 1

  1. Добавьте учетную запись Windows в группу "Доступ к совместимости до Windows 2000" с помощью оснастки Пользователи и компьютеры Active Directory.
  2. Добавьте учетную запись Windows в группу Доступа авторизации Windows с помощью оснастки Пользователи и компьютеры Active Directory.
  3. Перезагрузите компьютер под управлением Reporting Services.

Примечание.

  • Учетная запись Windows на шаге 1 и на шаге 2 — это учетная запись, используемая для запуска Reporting Services.
  • После добавления учетной записи в эти группы Reporting Services гарантированно сможете получить доступ к атрибуту TGGAU.
  • Для этого метода не требуется изменять разрешения для любого пользователя или группы.

Способ 2

Настройте Reporting Services службу Windows для запуска под учетной записью пользователя домена.

Примечание.

Сообщение об ошибке может быть записано в журнал трассировки Reporting Services при попытке изменить учетную запись пользователя, используемую для запуска службы Windows Reporting Services.

Способ 3

Настройте параметры в домене компьютера, на котором выполняется Reporting Services. Для этого воспользуйтесь одним из указанных ниже способов.

Предоставление разрешения на чтение для всех учетных записей пользователей и для всех групп в домене

Вы можете устранить эту проблему, предоставив разрешения на чтение учетной записи пользователя, которая используется для запуска Reporting Services службы Windows, чтобы считывать TGGAU атрибут во всех учетных записях пользователей и всех группах в домене. Для этого используйте сведения в одном из следующих разделов в зависимости от используемой операционной системы.

Для домена Microsoft Windows 2000

Если домен находится в режиме доступа с совместимостью до Windows 2000, группа ВСЕ имеет разрешение на чтение атрибута TGGAU для всех учетных записей пользователя и всех групп. Таким образом, учетная запись пользователя, используемая для запуска службы Reporting Services Windows, имеет доступ к атрибуту TGGAU учетной записи пользователя, которую Reporting Services использует для создания подписки по электронной почте.

Если домен не находится в режиме доступа с совместимостью до Windows 2000, также называемом собственным режимом, необходимо предоставить разрешение на чтение учетной записи пользователя, которая используется для запуска Reporting Services службы Windows, чтобы она могла считывать TGGAU атрибут в учетной записи пользователя, которую Reporting Services использует для создания подписки. Вы можете создать локальную группу домена, которая имитирует группу совместимости до Windows 2000, добавить учетную запись пользователя, используемую для запуска службы Windows Reporting Services, в эту группу, а затем предоставить ей разрешения на чтение для всех учетных записей пользователей. Для этого выполните следующие действия:

Примечание.

Для выполнения этих действий необходимо иметь разрешения администратора в домене.

  1. Нажмите кнопку Пуск и выберите последовательно пункты Программы, Администрирование и Active Directory — пользователи и компьютеры.
  2. В окне Пользователи и компьютеры Active Directory на панели слева разверните domainName.
  3. Щелкните правой кнопкой мыши пункт Пользователи, выберите пункт Создать, а затем — Группировать.
  4. В диалоговом окне Новый объект — группа введите MyAuthZGrp в поле Имя группы .
  5. В разделе Группа область выберите локальный домен и нажмите кнопку ОК. Группа MyAuthZGrp может появиться на панели справа.
  6. В левой области окна Пользователи и компьютеры Active Directory щелкните правой кнопкой мыши папку Пользователи и выберите пункт Свойства.
  7. В диалоговом окне Свойства пользователей откройте вкладку Безопасность .
  8. Нажмите кнопку Добавить.
  9. В диалоговом окне Выбор пользователей, компьютеров или групп выберите группу, созданную на шаге 5.
  10. Нажмите кнопку Добавить, а затем — ОК.
  11. Предоставьте разрешение на чтение учетной записи пользователя, выбранной на шаге 9.

Для домена Microsoft Windows Server 2003

Если домен находится на функциональном уровне Windows 2000, группа ВСЕ имеет разрешения на чтение атрибута TGGAU для всех учетных записей пользователей и групп. Таким образом, учетная запись службы Reporting Service имеет правильные разрешения для учетной записи пользователя, создавшего подписку по электронной почте.

Если домен находится на функциональном уровне Windows Server 2003, группа доступа авторизации Windows (группа WAA) имеет разрешения на чтение атрибута TGGAU всех учетных записей пользователей и групп. Таким образом, если добавить учетную запись службы Reporting Services в группу WAA, учетная запись службы Reporting Services имеет разрешения на чтение атрибута TGGAU учетных записей пользователей, которые могут создавать подписки электронной почты.

Чтобы добавить учетную запись службы Reporting Services в группу WAA, выполните следующие действия.

  1. На контроллере домена нажмите кнопку Пуск, выберите Пункты Программы, Администрирование и Пользователи и компьютеры Active Directory.
  2. В окне Пользователи и компьютеры Active Directory разверните узел Имя_домена, а затем щелкните Пользователи или другое соответствующее подразделение организации (OU).
  3. Дважды щелкните учетную запись службы Reporting Services.
  4. В диалоговом окне Свойства перейдите на вкладку Элемент .
  5. На вкладке Участник нажмите кнопку Добавить.
  6. В диалоговом окне Выбор групп введите Windows Authorization Access Group в разделе Введите имена объектов для выбора, а затем нажмите кнопку ОК.
  7. Перезапустите службу Reporting Services.

Предоставление разрешений на чтение определенной учетной записи пользователя или группе, которые могут создать подписку на Reporting Services

Возможно, вы не захотите предоставлять разрешения на чтение атрибуту TGGAU для всех учетных записей пользователей и групп. Вместо этого может потребоваться предоставить разрешения на чтение атрибуту TGGAU определенной учетной записи пользователя или группы.

Примечание.

  • Учетная запись пользователя, которую Reporting Services использует для запуска подписки, — это учетная запись пользователя Windows, которая входит в диспетчер отчетов при создании подписки.
  • Эти действия не требуются, если учетная запись службы Reporting Services входит в группу WAA.
  • Эти действия необходимо выполнить для каждой учетной записи пользователя или группы, которые могут создать подписку по электронной почте в Reporting Services.

Чтобы предоставить разрешения на чтение атрибуту TGGAU определенной учетной записи пользователя или группы, выполните следующие действия.

  1. На контроллере домена нажмите кнопку Пуск, выберите пункт Программы, Администрирование, а затем Пользователи и компьютеры Active Directory.
  2. В меню Вид убедитесь, что выбран пункт Дополнительные функции .
  3. Дважды щелкните учетную запись пользователя или группу, которые могут создать подписку на Reporting Services.
  4. В диалоговом окне Свойства перейдите на вкладку Безопасность.
  5. На вкладке Безопасность нажмите кнопку Добавить.
  6. В диалоговом окне Выбор пользователей, компьютеров или групп введите учетную запись Reporting Services службы в разделе Введите имена выбираемых объектов, а затем нажмите кнопку ОК.
  7. В диалоговом окне Свойства щелкните учетную запись пользователя, добавленную на шаге 6, в разделе Группы или имена пользователей.
  8. В разделе Разрешения дляПользователя выберите поле Разрешить проверка рядом с разрешением чтение, а затем нажмите кнопку ОК.

Примечание.

Изменения могут вступают в силу не сразу.

Настройка параметров домена на компьютере

Конфигурация домена зависит от режима работы домена Microsoft Windows. Кроме того, необходимо включить дополнительные функции в домене Windows. Чтобы найти режим работы домена на контроллере домена и включить дополнительные функции, выполните следующие действия.

  1. Нажмите кнопку Пуск и выберите последовательно пункты Программы, Администрирование и Active Directory — пользователи и компьютеры.
  2. В окне Пользователи и компьютеры Active Directory в левой области щелкните правой кнопкой мыши имя_домена и выберите пункт Свойства.
  3. В диалоговом окне ****Свойства domainName см. текстовое поле Режим работы домена на вкладке Общие .

В текстовом поле Режим работы домена отображается режим работы домена, используемый доменом в настоящее время. 4. В левой области окна Пользователи и компьютеры Active Directory щелкните Имя_домена. 5. В меню Вид выберите пункт Дополнительные функции. Дополнительные сведения об API-интерфейсах, которым требуется доступ к авторизации в учетных записях пользователей, см. в разделе Некоторые приложения и API требуют доступа к сведениям об авторизации в объектах учетных записей.