SQL Server 2012 - Openrowset - 没有sysadmin的用户

时间:2014-05-07 11:00:23

标签: sql-server sysadmin openrowset

环境:

  • 服务器:Windows Server 2012
  • SQL Server:SQL Server 2012

我想在生产环境中使用openrowset,而不向用户授予sysadmin。看到很多关于这个问题的帖子,但似乎没有为我提供解决方案。

我执行了以下步骤:

  1. 创建了非管理员Windows帐户
  2. 在我的数据库中创建了一个Windows身份验证登录(不是sysadmin)
  3. 已启用“显示高级选项”,“即席分发查询”
  4. 已在提供程序中禁用“Disallow adhoc access”(注册表中不存在密钥)
  5. 启用驱动程序

    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   
    
    1. 将运行SQL Server服务的用户更改为Administraor
    2. 授予管理员的TEMP,TMP目录对Step1上创建的用户的完全权限。
  6. 每当我运行查询时:

    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用户缺少其他权限。

    你能告诉我吗?

    由于 多伦

0 个答案:

没有答案
相关问题