SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactions
請問,以上SQL為什麼執行不了.我用的是 SQL2000,EXCEL 2003
請大家幫忙.謝謝!!!

解决方案 »

  1.   

    后面加$
    SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactions$
      

  2.   

    还有Excel 5.0后漏了单引号
    SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions$
      

  3.   

    --參考
    http://blog.csdn.net/hopewell_go/archive/2006/09/15/1228201.aspx
      

  4.   

    Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied. You must access this provider through a linked server.
    加 $ 後,還是出現以上提示
      

  5.   

    SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions$
    xactions工作区名称,其工作区的名称的后缀$不能少
      

  6.   

    SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet1$
    我改成上面這個樣子了,還是不行.
      

  7.   

    看看你的c:\對照關係.xls里面的工作表名是不是xactionsSELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions$
      

  8.   

    Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied. You must access this provider through a linked server.
    出以上的提示
      

  9.   

    把Excel 5.0改成Excel 8.0看看
      

  10.   

    运行这个,把结果贴出来
    EXEC sp_addlinkedserver 'ExcelSource', 
    'Jet 4.0',
    'Microsoft.Jet.OLEDB.4.0',
    'c:\MyData\DistExcl.xls',
    NULL,
    'Excel 5.0'
    GO
    EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', 'sa', 'Admin', NULL--返回在本地服务器上定义的链接服务列表
    exec sp_linkedservers
      

  11.   

    运行这个,把结果贴出来
    EXEC sp_addlinkedserver 'ExcelSource', 
    'Jet 4.0',
    'Microsoft.Jet.OLEDB.4.0',
    'c:\對照關係.xls',
    NULL,
    'Excel 8.0'
    GO
    EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', 'sa', 'Admin', NULL--返回在本地服务器上定义的链接服务列表
    exec sp_linkedservers
      

  12.   

    異地數據庫?你要查询的EXCEL在异地?
      

  13.   

    10.1.2.37 SQLOLEDB SQL Server 10.1.2.37 NULL NULL NULL
    10.3.3.1 SQLOLEDB SQL Server 10.3.3.1 NULL NULL NULL
    HZ SQLOLEDB SQLOLEDB 10.3.3.1 NULL NULL ERPDB
    SZ SQLOLEDB SQLOLEDB 10.2.1.210 NULL NULL YAZAKI
    TP SQLOLEDB SQL OLEDB 10.1.2.37 NULL NULL IEDB01
    Z03G01ERP SQLOLEDB SQL Server Z03G01ERP NULL NULL NULL
    repl_distributor SQLOLEDB SQL Server Z03ERPDB02 NULL NULL NULL
      

  14.   

    異地數據庫?你要查询的EXCEL在异地?
    我的是意思是:excel在我本機.但數據庫在另一臺電腦上.我是用查詢分析器連上去的.
      

  15.   

    你现在要查询本机的EXCEL还是异地的SQL数据库?
    题目:在SQL中訪問 EXCEL 數據?????
      

  16.   

    SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactions最后的 xactions 改为 [sheet1$]
      

  17.   

    gc_ding(E.T) ,請再幫忙看看
      

  18.   

    gc_ding(E.T)
    我的是意思是:excel在我本機.但數據庫在另一臺電腦上.我是本面用查詢分析器連數據庫上,然後用 sql 查詢 查機的 excel .
      

  19.   

    gc_ding(E.T)
    我的是意思是:excel在我本機.但數據庫在另一臺電腦上.我是本面用查詢分析器連到數據庫上,然後用 sql 查詢 查本機的 excel .
      

  20.   

    你是跑到另一台电脑的查詢分析器来查询你本机的EXCEL吧?
      

  21.   

    你是查查本機的 excel ,为什么要连到数据库上呢?
      

  22.   

    就是上面這條 sql 能不能執行
      

  23.   

    你要知道,你要查询的是EXCEL,所以你的语句是链接并打开EXCEL,跟数据库无关,
    除非你要在本机查询远程的SQL数据库
      

  24.   

    SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactionsData Source 必须输绝对路径。如果数据库和exlce不再同一机器上。必须写
    \\ip\c$\對照關係.xls
      

  25.   

    我試了一下,如在本地數據,可以執行,但如果要執行異地數據庫,怎麼辦
    ----------------------------------------------------------------
    这是你说的,可以本地执行;
    “執行異地數據庫”就是查询远程的SQL数据库,不是查询EXCEL
      

  26.   

    我的意思是數據庫在另外一臺服務器上.然本機連到數據庫上.然後訪問本機的 EXCEL.上面的語句執行不了.如果我直接在數據庫服務器上連訪問數據庫服務器上的EXCEL 是可以的
      

  27.   

    /***********************************  Execl 与 Sql Server 之间的数据导出导入 ****************************************/  
      
    --  假设在 D 盘下有 D:\test.xls 文件,那么从该文件(前提是该文件不能正在使用中)导入到SQL SERVER 的SQL语句写法有以下三种方式:  
    -- 第 1 种写法  
    SELECT *  FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=d:\test.xls;Extended Properties=Excel 8.0')...[sheet1$]  
      
    -- 第 2 种写法  
    SELECT *  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=d:\test.xls', [sheet1$])  
      
    -- 第 3 种写法,最强功能,还可以通过写条件过滤。  
    SELECT *  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=D:\test.xls', 'SELECT * FROM [sheet1$] Where A = 223.0')  
      
    --  以上的写法换为 SELECT * INTO FROM  即可导入 SQL 数据库 , 必须要加上 $ 符号。  
      
    --- 另外还有三种导入的技巧 :  
      
    A:  
    使用 DTS  
    可以使用 SQL Server 数据传输服务 (DTS) 导入向导将 Excel 数据导入 SQL Server 表。在逐步执行向导并选择 Excel 源表时,要记住附加美元符号 ($)   
    的 Excel 对象名称代表工作表(例如,Sheet1$),而没有美元符号的普通对象名称代表 Excel 指定的范围。  
      
    B:  
    使用链接服务器  
    然后可以  
    SELECT * Into ExeclTable FROM EXCELLINK...[Sheet1$]  
      
    C:  
    使用 BCP 工具   
    exec master..xp_cmdshell 'bcp "YTHR.Dbo.Employee2" in "D:\test.xls" -c -q -U"sa" -P""'     
    这种写法必须要在数据库中存在表名  
      

  28.   

    不知怎麼的,用以上方法還是不行.提示如下:
    Server: Msg 7415, Level 16, State 1, Line 1
    Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied. You must access this provider through a linked server.
    大家要能看懂這個提示,才知道問題在那裡
      

  29.   

    我说楼主呀,你的目的不明确:)
    既然要在本地SQL查询本地的EXCEL,跟远程的SQL有什么关系呢
      

  30.   

    All guys do not understand your question.
    We are in the same boat