Wes*_*all 6 windows sql-server file-permissions sql-server-2014
我正在尝试授予用户使用 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 服务器本身的完整服务器管理员权限?
根据 MS 文档,执行该命令的用户需要管理员批量操作。这是服务器级别的权限-bulkadmin。因此,您必须让任何将要执行此操作的用户担任此角色(在服务器级别),但不一定使他们成为 DBA。
https://learn.microsoft.com/en-us/sql/t-sql/functions/openrowset-transact-sql?view=sql-server-2017:OPENROWSET 权限由正在使用的用户名的权限决定传递给 OLE DB 提供程序。要使用 BULK 选项需要 ADMINISTER BULK OPERATIONS 权限。
如果您无法做到这一点(将用户置于 BulkAdmin 角色中),您可能需要使用 SSIS 创建电子表格。
| 归档时间: |
|
| 查看次数: |
3171 次 |
| 最近记录: |