Провайдер Microsoft.ACE.OLEDB.12.0 работает только для пользователей sysadmin

NIIIK
Дата: 07.02.2013 19:19:25
В целом провайдер
Microsoft.ACE.OLEDB.12.0
работает и открывает файлы

Галочка DisallowAdHocAccess убрана, в реестре значение 0.

Но работает только для пользователей sysadmin.

Как сделать так, что бы работало "для других пользователей в том числе МсСКЛ аутонтификация".
?
NIIIK
Дата: 07.02.2013 20:36:17
Ошибка если что

MSSQL2008
Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.
pkarklin
Дата: 07.02.2013 22:23:26
автор
Галочка DisallowAdHocAccess убрана, в реестре значение 0.


Сервер рестартован? Полный путь к 0лю какой?
NIIIK
Дата: 07.02.2013 23:29:50
pkarklin
автор
Галочка DisallowAdHocAccess убрана, в реестре значение 0.


Сервер рестартован? Полный путь к 0лю какой?


1) да, рестартован
2) полный путь как именному инстансу (хотя вроде он дефолтный с виду).
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\Providers\MSDASQL]
т. е. НЕ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer и там таких ключей нет.
Я понимаю что Это настрофка "другого провайдера". Более того, я вижу что когда я меняю настройки у провайдера
MSDASQL через интерфейсе - они изменяются в реестре (когда устанавливаю 0 даже просто удаляются).
Когда меняю у провайдера Microsoft.ACE.OLEDB.12.0 я вижу что они сохраняются/поднимаются, но в реестре изменений НЕ вижу.

3)
Собственно
По факту настройки провайдера изменяются вот таким макаром
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO

И эти же процедуры вызываются с формы когда жмёшь "ОК" в свойствах провайдера
Я вообще сомневаюсь что для этого провайдера эти свойства сохраняются в реестре, но тупо уже пробую что на различных форумах/собщения СКЛ.ру/

Пытался поиском по реестру найти AllowInProcess и DynamicParameters в других местах НЕ нашёл.

Запросом
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DisallowAdHocAccess', 1
GO

выполнять не стал
- интерфейсом работает и он его выполняет
- когда устанавливал параметры AllowInProcess и DynamicParameters напрямую процедурами рестартанулся сервак (даже остановился, а я руками поднимал службу).

4) работает если шаманить и писать процедуру "with execute as '' " потом давать одному пользователю права на эту процедуру, устанаваливать SET TRUSTWORTHY ON; потом ещё овнера для базы.

5) поиск по тексту который написан в моём втором сообщений на СКЛ.ру может выдать разве что мою тему. Гугл - кучу мусора.
NIIIK
Дата: 07.02.2013 23:32:57
Ещё важный момент, что если пользователь с правами sysadmin (мой пользователь, а не пользователь приложения), то всё работает на ура.
Как я понимаю решение с DisallowAdHocAccess для тех у кого вообще не работает. Тем более у меня "другой провайдер у которого нет настроек в реестре (они где-то в другом месте)".
pkarklin
Дата: 07.02.2013 23:43:52
NIIIK,

Не надо делать через студию или скриптами. Добавь ключ с типом DWORD вручную, только к нужному инстансу http://www.sqlservercentral.com/Forums/Topic652343-149-1.aspx
NIIIK
Дата: 07.02.2013 23:45:20
Перезапустил редактор реестра, нашёл ключ для этого провайдера, стот 0, но когда устанавливаешь 0 с интерфейса этот параметр удаляется.
Когда ставишь 1 появляется, когда меняешь вручную на 0, потом открываешь свойства в SSMS - там 0.
NIIIK
Дата: 07.02.2013 23:58:22
Тут

Первая ссылка
нашёл что-то из полезного только вот это
И то на второй странице

(с трудом выдрал ссылку)

В целом для этого провайдера я не вижу "шаманств с реестром".
Но ключ DisallowAdHocAccess для провайдера Microsoft.ACE.OLEDB.12.0 уже есть и установлен в значение 0
Думаю что он "для нужного инстанса"
1) потому что он синхронизируется с тем что показывает интерфейс
2) есть только в этом месте для этого провайдера.