OpenRowSet权限问题解决

 在使用OpenRowSet、OpenDataSource的时候,经常会出现

消息 7415,级别 16,状态 1,第 1 行
已拒绝对 OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 的特殊访问。必须通过链接服务器来访问此提供程序。

这样子的错误

网上搜了很多,大多是说用sa登录就可以了,但是,实际应用过程中不太可能给sa的用户使用,这里面就涉及到了需要给登录用户分配什么样的权限才可以的问题了。

 

其实很简单
登录用户必须有sysadmin的权限(即属于服务器角色:sysadmin),就可以使用OpenRowSet之类了。

 

 

 

另,写完这段文字后发现有个博文已经给出的答案,发个转载链接吧:

http://inghot.cn/article.asp?id=511

 

原文如下:

在用程序执行SQL里的导入其它格式库的存储过程时(如导入DBF,EXCEL,ACCESS到SQL SERVER库的存储过程),会提示:
错误类型:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
已拒绝对 OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 的特殊访问。必须通过链接服务器来访问此提供程序。

而直接在 查询分析器 里执行就不会报错。

如下面语句格式的存储过程

程序代码

'insert into DBF_Cost(OP_TIME,MSISDN,CALL_FEE,P2P_FEE,MONTH_FEE,GPRS_FEE,MNET_FEE,TOTAL_FEE)   select OP_TIME,MSISDN,CALL_FEE,P2P_FEE,MONTH_FEE,GPRS_FEE,MNET_FEE,TOTAL_FEE from OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="'+@path+'";User ID=;Password=;Extended properties=dBase 5.0'')...'+@tname



出现该问题的原因是当前登录SQL的帐户权限不够,需增加权限。

打开SQL SERVER,点开安全性,点击登录,如图:

在右边会出现所有的登录帐户,选择你当前的登录帐户,右边属性,如图:

在出现的 SQL SERVER登录属性 中选择 服务器角色 ,然后勾选 System Administrators 项,确定,如图:

再执行存储过程就不会了。

你可能感兴趣的:(sql,服务器,Excel,存储,sqlserver,p2p)