ITPub博客

首页 > 数据库 > SQL Server > Sqlserver linked server指向Excel报错编号为7399和7303的解决方法

Sqlserver linked server指向Excel报错编号为7399和7303的解决方法

原创 SQL Server 作者:lusklusklusk 时间:2021-10-13 13:44:18 0 删除 编辑

linked server的创建语句如下
EXEC master.dbo.sp_addlinkedserver @server = N'XL_INDEXPERFORMANCELIST', @srvproduct=N'Jet 4.0', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'\\frdbprod1\MKTINDX\IndexPerformanceList_DBPROD3.xls', @provstr=N'Excel 5.0'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'XL_INDEXPERFORMANCELIST',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

访问linked server有如下错误
Msg 7399, Level 16, State 1, Line 1 The OLE DB provider Microsoft.ACE.OLEDB.15.0 for linked server (null) reported an error. The provider did not give any information about the error.
Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider Microsoft.ACE.OLEDB.15.0 for linked server (null).



解决思路
1、确保excel没有被其他打开
2、确保访问linked server的用户拥有访问excel文件的权限,即查看用户是否有读取共享目录\\frdbprod1\MKTINDX\下所有文件的权限
3、确保@datasrc值中的共享目录是使用的UNC模式,即必须使用服务器名称而不能使用别名
To specify a shared data file, use its universal naming convention (UNC) name, which takes the general form, **\\Servername\Sharename\Path\**Filename.
备注:啥是别名,就是服务器对应一个ip,然后在DNS服务器中对这个ip也设置了其他的名称,使用其他名称也可以访问这台服务器


解决方法
按上面的思路1、2检查,发现都没有问题,最后发现frdbprod1不是服务器名称,服务器名称是netappdai1,修改@datasrc=N'\\netappdai1\MKTINDX\IndexPerformanceList_DBPROD3.xls',之后可以正常访问这个linked server了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2795712/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    449
  • 访问量
    868818