首页 > 解决方案 > SQL Server 2017 开放式设置与 Excel 2016

问题描述

我对 SQL Server 和OPENROWSET权限感到完全困惑。

我们的团队有一个广告组。该组包含在 DEV 服务器的 Windows 管理员本地组中。此同一个 AD 组对 SQL Server 2017 的本地安装具有 SysAdmin 权限。

尝试运行命令:

SELECT *  
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\Work\test.xls;HDR=YES',['sheet1$'])

对我有用,但对我的队友都不适用。

如果有关于使用该OPENROWSET命令的安全要求的最终文档 - 我还没有找到它(请 - 不要让我参考 docs.microsoft.com - 该文档不是以我理解的任何方式编写的)。

我还发现了其他问题,包括如果我更改 Excel 工作簿中的工作表名称 - 命令失败(是的 - 我在进行更改后关闭了这本书)。

最后——关于使用的一些反馈OPENROWSET——这通常是个好主意吗?一个坏主意?几乎是中立的,但要为这些问题做好准备?

我希望这个问题足够具体,可以回答——我可能已经花了 20 多个小时试图弄清楚如何理解它是如何工作的,这样我才能让它工作并始终如一地使用它。

谢谢!

标签: sqlsql-serverexcel

解决方案


因此,诚实地解决 SQL Server 的安全/权限和错误可能是我工作中最令人沮丧的方面。

关于您的困境的前几个问题和想法。

  • 您真的想授予您的团队连接到您的数据库系统管理员权限吗?我不会做那个时期,句号。
  • 数据会刷新吗?如果是,我建议您将这些数据提取到带有进程的 sql 表中,可能是 python、ssis、dts 包、powershell,无论您喜欢什么。

如果数据在那个 excel 文件中始终是静态的,我建议也许让它像一个链接服务器一样(希望)减少权限问题?此外,根据我的记忆,这样查询更容易。

无论如何,这篇文章(非 msdn 链接)可能会有所帮助?我以前做过一次这样的事情,困难的时间稍微少了一点,但后来又涉及到向 sql server 添加驱动程序(通常)。但是,然后我不必允许多个用户 sysadmin - 我认为任何事情都比这更好。

https://www.sqlshack.com/query-excel-data-using-sql-server-linked-servers/

有时问题不在于运行查询的用户,而是 SQL Server 使用它运行的帐户来获取文件的权限。本文也讨论了这方面。我不确定这是您的问题,因为您说它对我有用,但对您无效,但至少可以阅读文章的那部分吗?


推荐阅读