Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AMorgado

Permissão para executar OPENROWSET

Recommended Posts

Olá pessoal, boa tarde.

 

Estou trabalhando em um projeto que utilizará o OPENROWSET para exportar dados para uma planilha EXCEL.

 

Com um usuário SYSADMIN está funcionando, só que o problema é quando utilizo um usuário sem ser SYSADMIN o comando

 

INSERT INTO OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Temp\Teste11.xlsx;',
'Select cod, descr From [Plan1$]')
Select cod, descr From adm

Go

 

Retorna o seguinte erro:

 

Msg 7415, Level 16, State 1, Line 3
Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.
Alguém sabe como resolver este problema? Pois o usuário que irá executar em produção, possui apenas permissão de db_datareader e db_datawriter.
Estou utilizando: SQL Server 2008 - Standard Edition 64-bit - R2 - SP2
Obrigado a todos!
Ademir Morgado

Compartilhar este post


Link para o post
Compartilhar em outros sites
Com Proxy Account você resolve:




ou habilitando o acesso ao driver:





USE [master]
GO


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



Porém é preciso checar como esta o registro do windows:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.2\Providers\Microsoft.ACE.OLEDB.12.0

Item: DisallowAdhocAccess



Ou colocar a permissão deste usuário em questão para "bulkadmin"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Obrigado por responder.

 

Já havia executado estes comandos:

EXEC master . dbo. sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0 , NAllowInProcess , 1
GO
EXEC master
. dbo. sp_MSset_oledb_prop NMicrosoft.ACE.OLEDB.12.0 , NDynamicParameters , 1
GO
A parte do REGEDIT eu não conhecia.
No REGEDIT não havia o item DisallowAdhocAccess, entrei no MSSMS e fiz o seguinte:
Server Objects
Linked Servers
Providers
Microsoft.ACE.OLEDB.12.0 (Properties)
E selecionei o item DisallowAdHocAccess
Depois disto, mostrou no REGEDIT com value=1, alterei para 0 e passou a funcionar.
Muito obrigado!
Ademir Morgado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.