sql - 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 多个小时试图弄清楚如何理解它是如何工作的,这样我才能让它工作并始终如一地使用它。
谢谢!
解决方案
因此,诚实地解决 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 使用它运行的帐户来获取文件的权限。本文也讨论了这方面。我不确定这是您的问题,因为您说它对我有用,但对您无效,但至少可以阅读文章的那部分吗?
推荐阅读
- php - PHP SQL Join 查询合并多数组中的内容
- tensorflow - 对于无监督学习,如何生成图像集
- python - python removing duplicates from output
- json - 使用 tv4 或任何其他验证器的 JSON Schema 验证
- java - 在它的关键部分执行的线程可以在java中被抢占吗?
- javascript - mongodb - 聚合和展开外国参考文档
- android - Android:没有为发布类型安装应用程序
- regex - 正则表达式删除字符之间的空格但忽略开头的空格
- python - 我如何在 Python 3 中使用 EOF
- hash - 为什么 kerberos 使用哈希