用excel更新sql的问题

这个查询有问题:

UPDATE Provinces SET Provinces.DefaultName=T2.Defaultname FROM Provinces INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\provinces.xlsx;HDR=YES', 'SELECT Code, Defaultname FROM [Arkusz1$]') T2 On Provinces.Code = t2.Code WHERE Provinces.Code = T2.Code 

我收到错误:

消息7399,级别16,状态1,行1链接服务器“(null)”OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”报告错误。 提供者没有给出关于错误的任何信息。 消息7303,级别16,状态1,行1无法初始化链接服务器“(null)”的OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的数据源对象。

这个错误的来源是什么,如何修改SQL语句?

有几个可能的原因在这里详细介绍: 链接服务器使用Microsoft.Jet.OLEDB.4.0问题 。

一个可能的原因是访问该链接服务器的人员的sql服务login名的临时目录的文件系统权限: C:\Documents and Settings\(sql login name)\Local Settings\Temp

这是权限被拒绝的错误。 跟随:

如何将数据从Excel导入到SQL Server

如何使用SQL Server链接服务器和分布式查询使用Excel

注意如果您正在使用SQL Server 2005,请确保您已通过使用SQL Server表面区域configuration启用了“Ad Hoc分布式查询”选项。

 sp_configure 'Ad Hoc Distributed Queries', 1