e-posta aboneliğinin SQL Server Reporting Services teslimi sırasında AuthzInitializeContextFromSid API işlevine yapılan çağrı başarısız oluyor

Bu makale, e-posta aboneliği teslimi sırasında API işlev çağrısıyla AuthzInitializeContextFromSid karşılaşabileceğiniz sorunu çözmenize yardımcı olur.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 842423

Özet

Bu makalede, SQL Server Reporting Services'de Microsoft SQL Server Reporting Services ve Power BI Rapor Sunucusu oluşabilecek bir sorunun nedeni ve bazı olası çözümleri ele alınmaktadır bir etki alanı kullanıcı hesabı kullanarak bir e-posta aboneliği oluşturmaya ve işlemeye çalıştığınızda. Sorun, Authz.dll dosyasındaki bir AuthzInitializeContextFromSid API işlev çağrısı başarılı olmadığında oluşur.

Not

Bu sorun Windows Server 2008'de oluşmaz.

Bu makalede ele alınan çözümler şunlardır:

Reporting Services Windows hizmetini bir etki alanı kullanıcı hesabı altında çalışacak şekilde yapılandırma. Bu işlem sorunu çözmezse, aşağıdaki yöntemlerden birini de kullanmanız gerekir:

  • Etki alanı kullanıcı hesabı için tüm kullanıcı hesaplarında ve etki alanının tüm grubunda okuma izni verin.
  • Etki alanı kullanıcı hesabı için özel olarak bir kullanıcı hesabında veya kullanıcının üyesi olduğu bir grupta okuma izni verin.

Giriş

Bu makalede, bir e-posta aboneliğinin AuthzInitializeContextFromSid teslimi sırasında oluşan API işlev çağrısıyla ilişkili bir sorun ele alınmaktadır. Bu makalede, sorunun bazı olası çözümleri de ele alınmaktadır.

Ayrıntı bilgileri

Reporting Services programı, e-posta aboneliği için e-posta teslim ederken Authz.dll dosyasında tanımlanan API işlevini çağırabilir AuthzInitializeContextFromSid . Aşağıdaki koşullardan AuthzInitializeContextFromSid biri doğruysa Reporting Services programı API işlevini çağırabilir:

  • E-postaya bir rapor eklenir.
  • E-postaya bir rapor eklenir.

E-posta aboneliğini, Reporting Services Windows hizmetinin hizmet oturum açma hesabından farklı bir etki alanı kullanıcı hesabı kullanarak oluşturur ve işlerseniz, AuthzInitializeContextFromSid API işlev çağrısı başarısız olabilir.

İşlev çağrısı başarısız olursa, sorunu çözmek için Reporting Services çalıştıran bilgisayarın etki alanındaki ayarları yapılandırmanız gerekebilir.

Reporting Services programı, aboneliği oluşturmak için kullanılan kullanıcı hesabının raporu görüntülemek için hala doğru izinlere sahip olup olmadığını doğrulamak için API işlevini çağırır AuthzInitializeContextFromSid . Bu doğrulama, e-posta rapora yalnızca bir bağlantı, bir URL içerdiğinde gerekli değildir çünkü Reporting Services, kullanıcı URL'yi kullanarak rapora erişmeye çalıştığında kullanıcı izinleri doğrulaması gerçekleştirir.

API işlev çağrısı, AuthzInitializeContextFromSid geçerli kullanıcı için Windows grup üyeliği bilgilerini belirlemek üzere API işlev çağrısında AuthzInitializeContextFromSid belirtilen güvenlik kimlik numarasının (SID) tokenGroupsGlobalAndUniversal (TGGAU) özniteliğini okur. Reporting Services, Reporting Services Windows hizmetinin hizmet oturum açma hesabının güvenlik bağlamını kullanarak API işlevini çağırır AuthzInitializeContextFromSid . Bu nedenle, Reporting Services Windows hizmetini çalıştırmak için kullandığınız kullanıcı hesabının, e-posta aboneliklerini oluşturmak ve işlemek için kullanılan kullanıcı hesabındaki özniteliği okumak TGGAU için yeterli izinlere sahip olması gerekir.

Bilgisayar, Authz.dll dosyasında API işlev çağrısına erişmek ve bu çağrıyı AuthzInitializeContextFromSid çalıştırmak için doğru yapılandırılmamışsa bir hata iletisi alabilirsiniz. Ayrıca, Reporting Services günlük dosyasına bir hata iletisi yazılabilir. Hangi hatanın oluştuğuna karar vermek için şu adımları izleyin:

  1. ReportServerService_ Zaman Damgası.log dosyasını açın. authz sözcüğünü arayın.

    Not

    Varsayılan olarak, ReportServerService_ Timestamp.log dosyası konumunda <Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting Services\Logfiles folderbulunur.

    ReportServerService_ Timestamp.log dosyasında aşağıdakine benzer hata iletileriyle karşılaşabilirsiniz:

    • Hata iletisi 1

      ReportingServicesService!library!718!06/16/2004-00:00:03:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Rapor Sunucusu bir yapılandırma hatasıyla karşılaştı; AuthzInitializeContextFromSid: Win32 hatası: 5; olası neden - hizmet hesabının etki alanı kullanıcı SID'lerini denetleme hakları yoktur.; Bilgi: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Rapor Sunucusu bir yapılandırma hatasıyla karşılaştı; günlük dosyalarındaki diğer ayrıntılara bakın.

    • Hata iletisi 2

      ReportingServicesService!library!7e4!05/24/2004-10:00:22:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Rapor Sunucusu bir yapılandırma hatasıyla karşılaştı; AuthzInitializeContextFromSid: Win32 hatası: 1722; Bilgi: Microsoft.ReportingServices.Diagnostics.Utilities.ServerConfigurationErrorException: Rapor Sunucusu bir yapılandırma hatasıyla karşılaştı; günlük dosyalarındaki diğer ayrıntılara bakın.

  2. Hata iletisine neden olan e-posta aboneliğini değiştirin. E-postaya rapor eklemeyin veya eklemeyin. Raporun bağlantısını kullanın. Değiştirilen aboneliği işledikten sonra bir hata iletisi almazsanız, API işlev çağrısı başarısız olduğundan hatanın oluştuğundan AuthzInitializeContextFromSid emin olabilirsiniz.

Bu sorunu gidermek için aşağıdaki yöntemlerden birini kullanın:

Aşağıdaki koşullar doğruysa Yöntem 1'i kullanabilirsiniz:

  • Reporting Services Windows hizmeti, Ağ Hizmeti hesabı altında çalışıyor.
  • Reporting Services Windows hizmetinin altında çalıştığı hesabı değiştirmek istemiyorsunuz. Genel bir çözüm için Yöntem 2'i kullanabilirsiniz. Yöntem 2 sorunu çözmezse Yöntem 3'i kullanın.

Yöntem 1

  1. Active Directory Kullanıcıları ve Bilgisayarları ek bileşenini kullanarak Windows hesabını Windows 2000 Öncesi Uyumluluk Erişimi grubuna ekleyin.
  2. Active Directory Kullanıcıları ve Bilgisayarları ek bileşenini kullanarak Windows hesabını Windows Yetkilendirme Erişimi grubuna ekleyin.
  3. Reporting Services çalıştıran bilgisayarı yeniden başlatın.

Not

  • 1. ve 2. adımdaki Windows hesabı, Reporting Services'ı çalıştırmak için kullandığınız hesaptır.
  • Hesabı bu gruplara ekledikten sonra Reporting Services'in TGGAU özniteliğine erişebileceği garanti edilir.
  • Bu yöntem, herhangi bir kullanıcı veya grup üzerindeki izinleri değiştirmenizi gerektirmez.

Yöntem 2

Reporting Services Windows hizmetini bir etki alanı kullanıcı hesabı altında çalışacak şekilde yapılandırın.

Not

Reporting Services Windows hizmetini çalıştırmak için kullanılan kullanıcı hesabını değiştirmeye çalıştığınızda Reporting Services izleme günlüğüne bir hata iletisi yazılabilir.

Yöntem 3

Reporting Services çalıştıran bilgisayarın etki alanındaki ayarları yapılandırın. Bunu yapmak için aşağıdaki yöntemlerden birini kullanın.

Tüm kullanıcı hesaplarında ve etki alanındaki tüm gruplarda okuma izni verme

Reporting Services Windows hizmetini çalıştırmak için kullandığınız kullanıcı hesabına, tüm kullanıcı hesaplarında ve etki alanındaki tüm gruplarda özniteliği okumak TGGAU için okuma izinleri vererek sorunu çözebilirsiniz. Bunu yapmak için, kullandığınız işletim sistemine bağlı olarak aşağıdaki bölümlerden birinde yer alan bilgileri kullanın.

Microsoft Windows 2000 etki alanı için

Etki alanı Windows 2000 öncesi uyumluluk erişim modundaysa, EVERYONE grubunun tüm kullanıcı hesabı ve tüm gruplar için öznitelik üzerinde TGGAU okuma izni vardır. Bu nedenle, Reporting Services Windows hizmetini çalıştırmak için kullandığınız kullanıcı hesabının, Reporting Services'in e-posta aboneliğini oluşturmak için TGGAU kullandığı kullanıcı hesabındaki özniteliğine erişimi vardır.

Etki alanı, Yerel mod olarak da bilinen Windows 2000 öncesi uyumluluk erişim modunda değilse, Reporting Services'in aboneliği oluşturmak için kullandığı kullanıcı hesabında özniteliği okuyabilmesi TGGAU için Reporting Services Windows hizmetini çalıştırmak için kullanılan kullanıcı hesabına okuma izni vermelisiniz. Windows 2000 öncesi uyumluluk grubunun benzetimini sağlayan bir etki alanı yerel grubu oluşturabilir, Reporting Services Windows hizmetini çalıştırmak için kullandığınız kullanıcı hesabını bu gruba ekleyebilir ve ardından tüm kullanıcı hesaplarında grup için okuma izinleri vekleyebilirsiniz. Bunu yapmak için şu adımları uygulayın:

Not

Bu adımları izlemek için etki alanında yönetici izinlerine sahip olmanız gerekir.

  1. Başlat'a tıklayın, Programlar'ın üzerine gelin, sonra Yönetimsel Araçlar'ın üzerine gelin ve Active Directory Kullanıcıları ve Bilgisayarları'na tıklayın.
  2. Active Directory Kullanıcıları ve Bilgisayarları penceresinde, sol bölmede DomainName'i genişletin.
  3. Kullanıcılar'a sağ tıklayın, Yeni'nin üzerine gelin ve Gruplandır'a tıklayın.
  4. Yeni Nesne - Grup iletişim kutusunda, Grup adı kutusuna MyAuthZGrp yazın.
  5. Grup kapsamı'nın altında Etki alanı yerel seçeneğini belirleyin ve tamam'a tıklayın. MyAuthZGrp grubu sağ bölmede görünebilir.
  6. Active Directory Kullanıcıları ve Bilgisayarları penceresinin sol bölmesinde Kullanıcılar klasörüne sağ tıklayın ve ardından Özellikler'e tıklayın.
  7. Kullanıcı Özellikleri iletişim kutusunda Güvenlik sekmesine tıklayın.
  8. Ekle'ye tıklayın.
  9. Kullanıcıları, Bilgisayarları veya Grupları Seç iletişim kutusunda, 5. adımda oluşturduğunuz grubu seçin.
  10. Ekle'ye ve ardından Tamam'a tıklayın.
  11. 9. adımda seçtiğiniz kullanıcı hesabına Okuma izni verin.

Microsoft Windows Server 2003 etki alanı için

Etki alanı Windows 2000 işlev düzeyindeyse, EVERYONE grubunun tüm kullanıcı hesaplarının ve gruplarının TGGAU özniteliği için okuma izinleri vardır. Bu nedenle, Raporlama Hizmeti hizmet hesabı, e-posta aboneliğini oluşturan kullanıcı hesabı için doğru izinlere sahiptir.

Etki alanı Windows Server 2003 işlev düzeyindeyse, Windows Yetkilendirme Erişim Grubu (WAA grubu) tüm kullanıcı hesaplarının ve gruplarının TGGAU özniteliğine yönelik okuma izinlerine sahiptir. Bu nedenle, Reporting Services hizmet hesabını WAA grubuna eklerseniz, Reporting Services hizmet hesabının e-posta abonelikleri oluşturabilen kullanıcı hesaplarının TGGAU özniteliğine yönelik okuma izinleri vardır.

Reporting Services hizmet hesabını WAA grubuna eklemek için şu adımları izleyin:

  1. Etki alanı denetleyicisinde Başlat'a tıklayın, Programlar'ın üzerine gelin, Yönetimsel Araçlar'ın üzerine gelin ve Active Directory Kullanıcıları ve Bilgisayarları'e tıklayın.
  2. Active Directory Kullanıcıları ve Bilgisayarları penceresinde DomainName'i genişletin ve kullanıcılar'a veya başka bir uygun kuruluş birimine (OU) tıklayın.
  3. Reporting Services hizmet hesabına çift tıklayın.
  4. Özellikler iletişim kutusunda Üye sekmesine tıklayın.
  5. Üye sekmesinde Ekle'ye tıklayın.
  6. Grupları Seç iletişim kutusunda, Seçecek nesne adlarını girin'in altına Windows Yetkilendirme Erişim Grubu yazın ve ardından Tamam'a tıklayın.
  7. Reporting Services hizmetini yeniden başlatın.

Reporting Services aboneliği oluşturabilen belirli bir kullanıcı hesabına veya gruba okuma izinleri verme

Tüm kullanıcı hesaplarının ve gruplarının TGGAU özniteliğine okuma izinleri vermek istemeyebilirsiniz. Bunun yerine, belirli bir kullanıcı hesabının veya grubun TGGAU özniteliğine okuma izinleri vermek isteyebilirsiniz.

Not

  • Reporting Services'in aboneliği çalıştırmak için kullandığı kullanıcı hesabı, abonelik oluşturulduğunda Rapor Yöneticisi'nde oturum açan Windows kullanıcı hesabıdır.
  • Reporting Services hizmet hesabı WAA grubundaysa bu adımlar gerekli değildir.
  • Reporting Services'te e-posta aboneliği oluşturabilen her kullanıcı hesabı veya grubu için bu adımları izlemeniz gerekir.

Belirli bir kullanıcı hesabının veya grubun özniteliğine okuma izinleri vermek için TGGAU şu adımları izleyin:

  1. Etki alanı denetleyicisinde Başlat'a tıklayın, Programlar'ın üzerine gelin, Yönetimsel Araçlar'ın üzerine gelin ve Active Directory Kullanıcıları ve Bilgisayarları'e tıklayın.
  2. Görünüm menüsünde Gelişmiş özellikler öğesinin seçili olduğundan emin olun.
  3. Reporting Services aboneliği oluşturabilen kullanıcı hesabına veya gruba çift tıklayın.
  4. Özellikler iletişim kutusunda Güvenlik sekmesine tıklayın.
  5. Güvenlik sekmesinde Ekle'ye tıklayın.
  6. Kullanıcıları, Bilgisayarları veya Grupları Seç iletişim kutusunda, Seçecek nesne adlarını girin'in altına Reporting Services hizmet hesabını yazın ve ardından Tamam'a tıklayın.
  7. Özellikler iletişim kutusunda, 6. adımda Grup veya kullanıcı adları altında eklediğiniz kullanıcı hesabına tıklayın.
  8. Kullanıcı İzinleri'nin altında, Okuma izninin yanındaki İzin Ver onay kutusunu tıklatıp seçin ve ardından Tamam'a tıklayın.

Not

Değişiklikler hemen geçerli olmayabilir.

Bilgisayardaki etki alanı ayarlarını yapılandırma

Etki alanının yapılandırması, Microsoft Windows etki alanının işlem moduna bağlıdır. Ayrıca, Windows etki alanındaki gelişmiş özellikleri açmanız gerekir. Etki alanı denetleyicisinde etki alanı işlem modunu bulmak ve gelişmiş özellikleri açmak için şu adımları izleyin:

  1. Başlat'a tıklayın, Programlar'ın üzerine gelin, sonra Yönetimsel Araçlar'ın üzerine gelin ve Active Directory Kullanıcıları ve Bilgisayarları'na tıklayın.
  2. Active Directory Kullanıcıları ve Bilgisayarları penceresinde, sol bölmede DomainName öğesine sağ tıklayın ve ardından Özellikler'e tıklayın.
  3. ***DomainNameÖzellikleri iletişim kutusunda, Genel sekmesindeki Etki alanı işlem modu metin kutusuna bakın.

Etki alanı işlem modu metin kutusu, etki alanının şu anda hangi etki alanı işlem modunu kullandığını gösterir. 4. Active Directory Kullanıcıları ve Bilgisayarları penceresinin sol bölmesinde DomainName'e tıklayın. 5. Görünüm menüsünde Gelişmiş Özellikler'e tıklayın. Kullanıcı hesaplarında yetkilendirmeye erişim gerektiren API'ler hakkında daha fazla bilgi için bkz. Bazı uygulamalar ve API'ler hesap nesnelerinde yetkilendirme bilgilerine erişim gerektirir.