gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:55:20 25 4
gpt4 key购买 nike

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

用户收到以下错误:

Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

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

    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

我能看到的用户之间的唯一区别是那些能够成功运行此命令并将数据导入 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 来创建电子表格。

关于sql-server - 如何使用 INSERT INTO OPENROWSET 导出到 Excel 而无需成为目标服务器上的管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56656032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com