环境:
我想在生产环境中使用openrowset,而不向用户授予sysadmin。看到很多关于这个问题的帖子,但似乎没有为我提供解决方案。
我执行了以下步骤:
启用驱动程序
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
每当我运行查询时:
SELECT *
FROM OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Excel 8.0;Database=c:\temp\xxx.xls;','SELECT * FROM [xxx$]')
我明白了:
对OLE DB提供程序“MICROSOFT.ACE.OLEDB.12.0”的临时访问权限已被拒绝。您必须通过链接服务器访问此提供程序。
它似乎甚至没有尝试访问该文件,因为它是否存在我得到相同的错误。当我使用sysadmin用户运行它时,它工作,当我尝试查询非现有文件时,我得到错误,它无法找到它与非sysadmin用户相反。
也许我错过了不同目录的权限,或者非sysadmin用户缺少其他权限。
你能告诉我吗?
由于 多伦