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

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了

Supongo que te gusta

Origin blog.csdn.net/lusklusklusk/article/details/120742168
Recomendado
Clasificación