SQL SERVER 2017怎么用非sa用户使用OpenRowSet获取Excel文件数据?

vincentyan 2018-04-04 09:15:58
我的环境:

操作系统:windows server 2012r2

数据库:Sql Server 2017

问题:只能通过Sa用户才能用OpenRowSet获取Excel文件,非sa用户报如下错误:

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Line 7
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

希望:

windows server的授权用户可用OpenRowSet获取Excel文件,以实现数据可定期调度(Job)导入

另:Job好像不能Run as : sa 用户?
...全文
1045 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-04-10
  • 打赏
  • 举报
回复

改成本地系统账号再试下
mengmou 2018-04-09
  • 打赏
  • 举报
回复
首先为了便于排查,直接在查询窗口里跑测试,不要用作业。因为作业又涉及到额外的安全上下文传递与切换。(简单讲就是当作业所有者是sysadmin时,运行作业的账户是SQL Agent启动账户;当作业所有者不是sysadmin时,运行账户就是作业所有者。) 你说把非sa账户加到sysadmin 角色里在查询窗口直接跑也报错,我觉得不应该啊。我想问一下这个非sa账户是SQL 账户还是Windows账户?
vincentyan 2018-04-08
  • 打赏
  • 举报
回复
还是不行哦。。。,错误依旧: Executed as user: CHINA\DFSCLAB_SERVER1$. Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". [SQLSTATE 42000] (Error 7303) OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error". [SQLSTATE 01000] (Error 7412). The step failed. 说明一下:公司网络是有个china域的,是否和域有关?
吉普赛的歌 2018-04-04
  • 打赏
  • 举报
回复

作业那里直接换成 sa 就是了。
vincentyan 2018-04-04
  • 打赏
  • 举报
回复
以上代码,用非sa用户连接的窗口执行还是出如下错误: OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error". Msg 7303, Level 16, State 1, Line 22 Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 用sa连接打开的窗口是可以正常查出数据来的;
吉普赛的歌 2018-04-04
  • 打赏
  • 举报
回复
引用 楼主 u011037920 的回复:
Job好像不能Run as : sa 用户?
可以用 sa 用户的, 哪怕 sa 被禁用也可以。 你先用 :
sp_configure 'show advanced options',1  
reconfigure  
go  
sp_configure 'Ad Hoc Distributed Queries',1  
reconfigure 
GO
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
	'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\1.xlsx')...[Sheet1$]
在查询窗口跑一次试试能不能正常运行?
vincentyan 2018-04-04
  • 打赏
  • 举报
回复
已经赋予了sysadmin权限,还是不行。。。
二月十六 2018-04-04
  • 打赏
  • 举报
回复
非sa用户赋上sysadmin的权限试试
吉普赛的歌 2018-04-04
  • 打赏
  • 举报
回复
引用 7 楼 u011037920 的回复:
在作业step的高级属性里有一个run as user,但是这个选择不了sa,好像这个run as user是真对某个具体库的用户,不是服务器的用户;
不要选什么择, 直接输入 sa 就可以了
vincentyan 2018-04-04
  • 打赏
  • 举报
回复
按这个设置把owner设置成sa,还是有错误,而且excuted as user并不是sa: Message Executed as user: CHINA\DFSCLAB_SERVER1. Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". [SQLSTATE 42000] (Error 7303) OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error". [SQLSTATE 01000] (Error 7412). The step failed.
vincentyan 2018-04-04
  • 打赏
  • 举报
回复
在作业step的高级属性里有一个run as user,但是这个选择不了sa,好像这个run as user是真对某个具体库的用户,不是服务器的用户;

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧