Ошибка запроса поставщика Microsoft.ACE.OLEDB.12.0 от SQL Server

Это не вопрос, но этот пост может быть полезен для сообщества, потому что я не смог найти ответ в Интернете.

Протестировано

  • Windows 2008 R2 x64 и Windows 2003 x64
  • SQL Server 2008 SP3 x64
  • Поставщик Microsoft.ACE.OLEDB.12.0 x64

SQL Server работает под учетной записью домена, которая не является администратором локальной машины. Проверка подлинности соединения SQL Server - это Windows.

Проблема:

при создании и использовании связанного сервера или запроса adhoc с помощью этого провайдера вы можете получать такие ошибки:

Поставщик OLE DB "MSDASQL" для связанного сервера "xxx" возвратил сообщение "[Microsoft] [Менеджер драйверов ODBC] Ошибка SQLSetConnectAttr"

Поставщик OLE DB "MSDASQL" для связанного сервера "xxx" возвратил сообщение "[Microsoft] [драйвер ODBC dBASE]. Ваш доступ к сети был прерван. Чтобы продолжить, закройте базу данных и снова откройте ее.

Невозможно инициализировать объект источника данных поставщика OLE DB "MSDASQL" для связанного сервера "xxx"

Не удалось найти устанавливаемый ISAM

Поставщик OLE DB "MSDASQL" для связанного сервера "xxx" возвращенное сообщение "[Microsoft] [драйвер ODBC dBASE] Общая ошибка Не удается открыть раздел реестра Временная (летучая) Ace DSN для процесса 0x16f4 Тема 0x2728 DBC 0x1ce64ae8 Xbase '

Причина заключается в том, что поставщик создает временный файл в временной папке учетной записи домена SQL Server, используя учетные данные пользователя для подключения. Обычные пользователи не имеют таких прав.

Ответ 1

Решение
предоставить разрешение "Изменить" для пользователей SQL-сервера в временной папке учетной записи домена Sql Server. Обычно эта папка

  • Windows 2003: "c:\Documents and Настройки \sql_server_account_name\Local Settings\Temp\"
  • Windows 2008: "C:\Users\sql_server_account_name\AppData\Local\Temp \"