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 项,确定,如图:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值