Azt hiszem az utóbbi hetekben túl sok SQL Server bug-ot és problémát láttam. Ezek közzül kettő kedvencem van:
- Non-Yielding Scheduler: erről egy későbbi bejegyzésben térek ki, itt még memory dump-okat kell elemezzek.
- Local Activation Failure: ez utóbbiról szól ez a bejegyzés.
Az SQL Agent-ben volt egy olyan job, ami egy SSIS csomagot próbált “megrántani” minden 15. percben és a következő hibaüzenetet találtam minden 15. percben a System Eventlog-ban:
The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
{FDC3723D-1588-4BA3-92D4-42C430735D7D}
and APPID
{83B33982-693D-4824-B42E-7196AE61BB05}
to the user DOMAIN\SQLAgentUser SID (S-1-5-21-0000000000-0000000000-000000000-0000) from address LocalHost (Using LRPC). This security permission can be modified using the Component Services administrative tool.
A hibaüzenet alapján a következő megállapításokat tehetjük: valaminek nincs joga valamihez ;-). Egész pontosan az SQL Agent felhasználómnak nem volt Local Activation és Local Launch joga az Microsoft SQL Server Integration Services 11.0 szolgáltatáshoz. Ez azért fordulhatott elő, mert a service account nem tagja a helyi Administrators csoportnak. Megjegyzem nem is szabad betenni biztonsági okok miatt – minimum jogosultság elvét kell alkalmazni.
A megoldása a hibának igen egyszerű:
- Indítsuk el a comexp.msc-t
- Keressük meg a SQL Server Integration Services 11.0-t (lsd képen)
- Jobb egérgomb megnyomása után menjünk a Properties menüpontra
- Menjünk a Security fülre, majd a Launch and Activation Permissions részen nyomjuk meg az Edit gombot.
- Adjuk hozzá az SQL Agent felhasználónkat Local Launch és Local Activation joggal.
Természetesen, ha az SQL Agent Local System nevében fut, akkor ez a probléma nem jön elő, mert ugye annak több mint elég joga van.