select * into 表 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet$)报错如下链接服务器"(null)"的 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0" 返回了消息 "未指定的错误"。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0" 的数据源对象。
------
语句我在2台电脑上测试成功,在服务器上执行的时候就报这个错误而且类似的语句前段时间也才执行过 
请各位看看 问题在哪?

解决方案 »

  1.   


    select * into 表 from
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet$) 
    sheet$? sheet1$?
      

  2.   

    小爱说得没错  估计是你的EXCEL没关闭
      

  3.   

    sheet表单名字没有错 表没有开,不存在上面说的问题
      

  4.   

    服务器上没装office 根本打不开
      

  5.   

    参考:
    http://blog.csdn.net/kingbox2076/archive/2008/01/03/2021844.aspx
      

  6.   

    oledb驱动问题吧。看有excel5.0的驱动没?
    看注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats
    下有没excel5.0.
    查一下吧,图贴不了。
      

  7.   

    http://topic.csdn.net/u/20071210/09/28c77ee5-7920-4f4c-9e0b-bd73f5150c34.html
      

  8.   

    'MICROSOFT.JET.OLEDB.4.0' 无法链接这个服务器,正确否?
      

  9.   

    汗。没有装excel。。不过这个命令还是很强大的。
      

  10.   

    oledb驱动问题吧。看有excel5.0的驱动没? 
    看注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats 
    下有没excel5.0. 
    查一下吧,图贴不了。
    ----------------------------
    这个没问题汗。没有装excel。。不过这个命令还是很强大的。
    --------------------------
    没装excel 是可以导入的 
      

  11.   

    发表于2009-2-4 9:47:44
    直接把Excel的数据导入到Sql server中相关错误解决方法sql语句:SELECT * into sheet$
    FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=C:\Documents and Settings\liurj\Desktop\temp\a.xls;User ID=Admin;Password=;Extended properties="Excel 8.0;HDR=Yes;";Persist Security Info=False')...[Sheet$]或者select * into sheet3$
    from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=C:\Documents and Settings\liurj\Desktop\temp\a.xls',[Sheet$])
    导入excel到数据库中的一个表错误提示:Msg 15281, Level 16, State 1, Line 1
    SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online. 
    用sp_configure将'Ad Hoc Distributed Queries' 打开并设置USE master
    go
    EXEC sp_configure 'Ad Hoc Distributed Queries',1
    RECONFIGURE;
    EXEC sp_configure;错误提示:Msg 15123, Level 16, State 1, Procedure sp_configure, Line 51
    The configuration option 'Ad Hoc Distributed Queries' does not exist, or it may be an advanced option.
    显示高级选项:sp_configure 'show advanced options',1
    RECONFIGURE WITH override
    go
    sp_configure 'Ad Hoc Distributed Queries',1
    RECONFIGURE WITH override
    go
    从另一个sql server导入sql server的代码是:
    SELECT  *  
      FROM  OPENDATASOURCE(  
                        'SQLOLEDB',  
                        'server=YKTCPC-105\\JERRYSQL2000;user id=sa;password=123456;database=Ys2008'  
                        ).ys2008.dbo.yy_user  
       
    OPENDATASOURCE用法解释
    不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。 语法
    OPENDATASOURCE ( provider_name, init_string ) 参数
    provider_name 注册为用于访问数据源的 OLE DB 提供程序的 PROGID 的名称。provider_name 的数据类型为 char,没有默认值。init_string 连接字符串,这些字符串将要传递给目标提供程序的 IDataInitialize 接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:"keyword1=value; keyword2=value." 在 Microsoft® Data Access SDK 中定义了基本语法。有关所支持的特定关键字值对的信息,请参见提供程序中的文档。下表列出 init_string 参数中最常用的关键字。 关键字 OLE DB 属性 有效值和描述 
    数据源 DBPROP_INIT_DATASOURCE 要连接的数据源的名称。不同的提供程序用不同的方法对此进行解释。对于 SQL Server OLE DB 提供程序来说,这会指明服务器的名称。对于 Jet OLE DB 提供程序来说,这会指明 .mdb 文件或 .xls 文件的完整路径。 
    位置 DBPROP_INIT_LOCATION 要连接的数据库的位置。 
    扩展属性 DBPROP_INIT_PROVIDERSTRING 提供程序特定的连接字符串。 
    连接超时 DBPROP_INIT_TIMEOUT 超时值,在该超时值后,连接尝试将失败。 
    用户 ID DBPROP_AUTH_USERID 用于该连接的用户 ID。 
    密码 DBPROP_AUTH_PASSWORD 用于该连接的密码。 
    目录 DBPROP_INIT_CATALOG 连接到数据源时的初始或默认的目录名称。 
    注释
    OPENDATASOURCE 函数可以在能够使用链接服务器名的相同 Transact-SQL 语法位置中使用。因此,就可以将 OPENDATASOURCE 用作四部分名称的第一部分,该名称指的是 SELECT、INSERT、UPDATE 或 DELETE 语句中的表或视图的名称;或者指的是 EXECUTE 语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE 应该指的是另一个 SQL Server。OPENDATASOURCE 不接受参数变量。与 OPENROWSET 函数类似,OPENDATASOURCE 应该只引用那些不经常访问的 OLE DB 数据源。对于访问次数稍多的任何数据源,请为它们定义链接的服务器。无论 OPENDATASOURCE 还是 OPENROWSET 都不能提供链接的服务器定义的全部功能,例如,安全管理以及查询目录信息的能力。每次调用 OPENDATASOURCE 时,都必须提供所有的连接信息(包括密码)。
      

  12.   

    insert into stuinf select * from  OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=d:\test.xls',sheet1$)
    这条命令在查询分析器里执行就能能过。我用存储过程执行create PROCEDURE [dbo].[exceldata_cz] 
      @filename   varchar(200),               --Excel文件名   
      @exceltablename     varchar(20),   工    --EXcel内表名   
      @tablename   varchar(200)               --将要存在数据库里的表名   
    AS
            declare   @sql   varchar(1000)           set   @sql=' insert into  '+@tablename+'Select * From  openrowset(''Microsoft.Jet.OLEDB.4.0'', ''Excel 5.0;HDR=YES;DATABASE='+@filename+''','+@exceltablename+')'
    exec(@sql)  
    出现以下提示:
    消息 102,级别 15,状态 1,第 1 行
    '*' 附近有语法错误。(1 行受影响)
    请高手指教
      

  13.   

    select * into 表  from openrowset('microsoft.jet.oledb','excel=aa.xls,da=sa,database='c:\a.xls''
    语句实现没有问题呀!看一下你的excel是否开着。
      

  14.   

    excel没有打开,存储过程执行就是有问题。
    我在SQL查询分析器中执行单独的语句也没有问题。不知道是为什么,高手们指导一下。
      

  15.   

    服务器用不着装office的,原因有很多种,字段中有null值,或者你的excel底部有空行。选择除文本区德所有行删除,或者检查字段中是否存在null值。
      

  16.   

    接着说你的 外围管理有没有 开 openrowset????
      

  17.   

    服务重启过了。
    字段中没有null值
    外围管理,是开着的。
    就是想弄明白为什么会出现这种现象!