小编Wes*_*all的帖子

如何使用 INSERT INTO OPENROWSET 导出到 Excel,而无需成为目标服务器上的管理员

我正在尝试授予用户使用 OPENROWSET 将数据从 SQL Server 导出到 Excel 文件的权限。

用户收到以下错误:

无法为链接服务器“(null)”初始化 OLE DB 访问接口“Microsoft.ACE.OLEDB.12.0”的数据源对象。

我们可以重现运行以下代码块的问题,我可以成功运行而用户不能:

    INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml; HDR=YES;IMEX=0; Database=\\servername\exportdirectory\exportfile.xlsx', 'Select ExcelColumn from [TabName$]')
    SELECT TOP 1 SQLColumn FROM SQLTable
Run Code Online (Sandbox Code Playgroud)

我在用户之间看到的唯一区别是,能够成功运行此命令并将数据导入 Excel 的用户是托管 SQL 实例和目标目录的 Windows 服务器上的管理员。

无法运行代码的用户对excel文件所在的目标文件目录具有完全控制权限,对SQL实例具有sysadmin权限。

有没有办法允许这个用户写入这个文件而不授予 Windows 服务器本身的完整服务器管理员权限?

windows sql-server file-permissions sql-server-2014

6
推荐指数
1
解决办法
3171
查看次数