我现在的代码:
SELECT * into sheet11
FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=+addr1;User ID=Admin;Password='tlsys';Extended properties="Excel 8.0;HDR=Yes;";Persist Security Info=False')...[Sheet1$]显示这样的错误:
消息 102,级别 15,状态 1,第 1 行
'tlsys' 附近有语法错误。如果我去掉'tlsys',执行的时候会提示这样的错误(无论我把excel表的密码是不是取消了都这样提示):
消息 7314,级别 16,状态 1,过程 input_sheet1,第 16 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 不包含表 "Sheet1$"。该表不存在,或者当前用户没有访问该表的权限。

解决方案 »

  1.   

    说明一下,addr1,是一个变量,因为程序调用这个存储过程的时候是要把路径的值给传递进来的,addr1就是接收这个值的变量。
      

  2.   

    我的这段源代码是这样的 set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    goALTER PROCEDURE [dbo].[input_sheet1]
        
        declare @addr1 varchar(100)
           set @addr1='d:\work\data.xls'  --设置地址变量参数AS
    BEGIN
        
        SET NOCOUNT ON;select * into sheet11 from OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source='+@addr1+';User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$] 
    --将excel表的数据导入数据库
    insert into sheet1 select * from sheet11   --将sheet11的记录导入sheet1
    drop table sheet11  --删除sheet11
        
    END
    执行后报的错是这样的: 
    消息 156,级别 15,状态 1,过程 input_sheet1,第 4 行
    关键字 'declare' 附近有语法错误。
    消息 156,级别 15,状态 1,过程 input_sheet1,第 7 行
    关键字 'AS' 附近有语法错误。
    消息 102,级别 15,状态 1,过程 input_sheet1,第 13 行
    '+' 附近有语法错误。
      

  3.   

    我这段代码是这样的:set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    goALTER PROCEDURE [dbo].[input_sheet1]

    declare @addr1 varchar(100)
    set @addr1='d:\work\data.xls'  --设置地址变量参数AS
    BEGIN

    SET NOCOUNT ON;select * into sheet11 from OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Data Source='+@addr1+';User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$] 
    --将excel表的数据导入数据库
    insert into sheet1 select * from sheet11   --将sheet11的记录导入sheet1
    drop table sheet11  --删除sheet11

    END
    运行后:消息 156,级别 15,状态 1,过程 input_sheet1,第 4 行
    关键字 'declare' 附近有语法错误。
    消息 156,级别 15,状态 1,过程 input_sheet1,第 7 行
    关键字 'AS' 附近有语法错误。
    消息 102,级别 15,状态 1,过程 input_sheet1,第 13 行
    '+' 附近有语法错误。