Ошибка -2147024891 (0x80070005) Access is denied при создании OLE объекта класса Excel.Application


: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/users/d/dm9/domains/mokshin.su/includes/unicode.inc on line 311.

Конфигурация:
- MS Windows Server 2008 R2 64bit
- MS SQL Server 2008 R2
- MS Excel 2003

В хранимой процедуре создаем объект Excel примерно таким образом:

DECLARE @iXLApp int, @iRetCode int
EXEC @iRetCode = sp_OACreate 'Excel.Application', @iXLApp OUTPUT, 4

Получаем указанную ошибку: -2147024891 (0x80070005) Access is denied.

Долгие мучительные поиски привели к следующему:

  • Проверить, что включен параметр SQL сервера Ole Automation Procedures (правда, если он не включен - выдаются совсем другие сообщения об ошибках ;-) ):

    EXEC sp_configure 'Ole Automation Procedures', 1
    RECONFIGURE

  • Если операционка 32-битная, то может помочь этот шаг:

    • запустить DCOMCNFG
    • далее в разделе Component Services/Computers/My Computer/DCOM Config нужно найти пункт Microsoft Excel Application
    • клик правой кнопкой Свойства (Properties)
    • перейти на закладку Безопасность (Security)
    • в разделе Разрешения на запуск и активацию (Launch and Activation Permissions) выбрать Настроить (Customize), нажать Изменить... (Edit...), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный запуск, Локальная активация (Local Launch, Local Activation)
    • в разделе Права доступа (Access Permissions) выбрать Настроить (Customize), нажать Изменить... (Edit...), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный доступ (Local Access)
  • Если операционка 64-битная, и в разделе Component Services/Computers/My Computer/DCOM Config НЕТ пункта Microsoft Excel Application, можно попробовать запустить консоль (MMC) в 32-битном режиме - возможно пункт Microsoft Excel Application появится. Далее все действия как в описанном выше шаге.
    Зпуск из командной строки:

    mmc /32

    И добавить оснастку Component Services - меню Консоль / Добавить или удалить оснастку... (File / Add/Remove Snap-in...)

  • Если не помогает ничего описанное выше, то действуем в лоб:

    • в разделе Component Services/Computers на My Computer клик правой кнопкой, Свойства (Properties)
    • закладка Безопасность COM (COM Security)
    • в разделе Права доступа (Access Permissions) нажать Изменить настройки по умолчанию... (Edit Default...), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный доступ (Local Access)
    • в разделе Разрешения на запуск и активацию (Launch and Activation Permissions) нажать Изменить настройки по умолчанию... (Edit Default...), в открывшемся окне добавить для пользователя, под которым запускается служба SQL Server, права Локальный запуск, Локальная активация (Local Launch, Local Activation)

Ссылки, посвященные этой теме:
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/52767b42-0...
http://www.sql.ru/forum/actualthread.aspx?tid=525718
http://www.sql.ru/forum/actualthread.aspx?tid=197126


Нравится