【问题标题】:SQL Server OPENROWSET without SYSADMIN role没有 SYSADMIN 角色的 SQL Server OPENROWSET
【发布时间】:2020-12-29 18:52:43
【问题描述】:

我们广泛使用 OPENROWSET 函数将 .CSV 和 Excel 文件导入我们的 SQL Server 2012 环境,使用 MSDASQL 或 ACE:

SELECT * 
FROM OPENROWSET ('MSDASQL',
                 'DRIVER={MICROSOFT access TEXT DRIVER (*.TXT, *.CSV)};', 
                 'SELECT * FROM E:\INCOMING\REPORT_EXTRACT.CSV') 

或使用 ACE:

SELECT * FROM     OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','TEXT;DATABASE=E:\INCOMING\;HDR=YES;', 'SELECT     * FROM [REPORT_EXTRACT.CSV]');

我们遇到了典型的错误消息:

消息 7415,第 16 级,状态 1,第 1 行
对 OLE DB 提供程序“MSDASQL”的临时访问已被拒绝。您必须通过链接服务器访问此提供程序。

启用此功能的唯一解决方法是授予所述用户SYSADMIN 角色 - 显然不理想。

文件的位置在服务器本身,访问 DO 的用户拥有访问该文件夹的必要权限。 SQL Server 服务在具有与桌面交互权限的本地系统帐户下运行。

我们尝试了以下解决方法/修复,但均无济于事:

1执行了以下代码:

EXEC master . dbo. sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′ , N’AllowInProcess’ , 1
GO

EXEC master . dbo. sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′ , N’DynamicParameters’ , 1
GO

*2 DisAllowAdHocAccess 注册表修复:

这是当前状态:

3为上述用户添加ADMINISTER BULK OPERATIONS权限

我们的过程中有几十个表达式和文件使用 OPENROWSET,因此 BULK INSERT、构建 SSIS 包、利用 Excel 文件作为链接服务器是不可行的选择。

有什么建议吗?

【问题讨论】:

  • 在本地系统帐户下运行 MSSQL 是危险的,并且与授予 SA 差不多,尤其是在用户有权访问基本操作系统的情况下。
  • @Charlieface 感谢您的提示!作为本地系统运行有哪些风险?它应该在什么下运行?
  • 本地系统:根据您启用的功能,用户可以跳出 MSSQL 以充当系统。然后整个服务器就被攻陷了。例如,他们可以读取域管理员的密码哈希。通常,当您设置 MSSQL 时,它会创建一个服务帐户。基本上只是一个普通帐户,具有随机不变的密码。我不确定在你设置之后这样做有多安全。
  • 解决您的问题的方法可能是使用 sproc 使用 EXECUTE AS sa 权限进行导入
  • ..@DepthofField..问题中的提供者略有混淆。 MSDASQL 是 OLE 和 ODBC 之间的桥梁提供程序。 OPENROWSET 需要和 ole 提供者,但 {MICROSOFT access TEXT} 是 ODBC 提供者,因此为了弥补差距,使用了 MSDASQL。 OPENROWSET (MSDASQL[OLEDB-->ODBC], [ODBC]DRIVER={MICROSOFT access}) 对 OLE DB 提供程序“MSDASQL”的临时访问被拒绝表示问题:没有对 MSDASQL 的临时访问。说明在:docs.microsoft.com/en-us/troubleshoot/sql/admin/…

标签: sql-server openrowset


【解决方案1】:

哇 - 经过多年的故障排除,我终于弄明白了它是什么!

控制允许 Ad-hoc 访问的注册表项值依赖于 DisallowAdHocAccess 在该 EXACT 句中。

在我们的例子中,AdHoc 中的“A”没有大写:

为了解决这个问题,我:

  1. 已按说明删除注册表值
  2. 重新启用Disallow AdHoc Access 选项(它重新创建了注册表值)

  1. 手动将注册表DisallowAdHocAccess 值设置为“0”

问题解决了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多