使用excel更新sql的问题

时间:2010-05-11 13:11:24

标签: sql-server-2005 excel

我对此查询有疑问:

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

我收到错误:

  

Msg 7399,Level 16,State 1,Line 1       链接服务器“(null)”的OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”报告错误。提供商未提供有关错误的任何信息。       Msg 7303,Level 16,State 1,Line 1       无法为链接服务器“(null)”初始化OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的数据源对象。

此错误的来源是什么,以及如何修改SQL语句?

2 个答案:

答案 0 :(得分:1)

这里有几个可能的原因:Linked Server using Microsoft.Jet.OLEDB.4.0 problem

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

答案 1 :(得分:0)

这是权限被拒绝错误。遵循:

How to import data from Excel to SQL Server

How to use Excel with SQL Server linked servers and distributed queries

注意如果您使用的是SQL Server 2005,请确保已使用SQL Server外围应用配置启用了“Ad Hoc Distributed Queries”选项。

sp_configure 'Ad Hoc Distributed Queries', 1