【问题标题】:OpenRowSet and OpenDataSet without sysadmin rights没有系统管理员权限的 OpenRowSet 和 OpenDataSet
【发布时间】:2012-12-18 23:45:57
【问题描述】:

有没有什么方法可以在 SQL Server 2008 R2 中使用 OpenRowSet 和 OpenDataSet 命令而无需拥有 SysAdmin 权限?

我正在尝试从 Excel 文件加载数据,而我们将执行实际加载的服务帐户没有系统管理员权限。

它目前不是一个链接的“服务器”,文件名可以逐月更改。

这是我的查询:

SELECT  
  Center,
  Amount 
FROM OPENROWSET(
  'Microsoft.ACE.OLEDB.12.0'
  ,'Excel 8.0;HDR=NO;Database=C:\exceldata.xls'
  ,'SELECT 
      F1 as Center,
      F2 as Amount
   FROM [Sheet1$]')
WHERE Amount > 0

谢谢

【问题讨论】:

    标签: sql sql-server sql-server-2008


    【解决方案1】:

    我有同样的问题,用这个指令解决它http://www.johnsoer.com/blog/?p=538

    很快:将双字注册键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\YOUR_MSSQL_VERSION.YOR_INSTANCE_NAME\Providers\Microsoft.ACE.OLEDB.12.0\DisallowAdhocAccess 添加到 0

    【讨论】:

    • 临时查询是不允许的,所以这不起作用。不过我找到了一个可行的解决方案,我们添加了 ACE 驱动程序,然后以编程方式将 Excel 文件转换为 CSV 文件。
    【解决方案2】:

    您不一定需要系统管理员权限,只需要ADMINISTER BULK OPERATIONS 权限(这是服务器级别的权限,但不完全是系统管理员)。

    如果这不是一个选项,您可以尝试设置链接服务器连接并按照this post中的方法。

    【讨论】:

    • 是否需要其他一些安全设置?我的用户具有 ADMINISTER BULK OPERATIONS 权限,但我仍然收到错误消息:消息 7415,级别 16,状态 1,第 1 行对 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的临时访问已被拒绝。您必须通过链接服务器访问此提供程序。
    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多