估计是你的ConnectionString设置错了..你可能只设置了Expressions的ConnectionString为你的变量..
应该要修改一下.为"Data Source="+@[user::filename]+";Provider=Microsoft.Jet.OLEDB.4.0;"试试.

解决方案 »

  1.   


    你是同时导多个ACCESS库还是一个access库中的多个表?如果是后者,在导的时候选择多个表即可.
    如果是前者,没搞过.
      

  2.   

    我的开发背景是循环导入acess数据库,具体要求如下:
    项目背景:
    1. 从指定的文件夹中把acess数据库中几个表的数据导入到sql server 2005的数据库中的对应表
    2. 把已经导入数据的acess数据库文件移动到一个指定的文件夹
    3. 按照1,2两个步骤批处理acess数据库文件(库结构是一样的)
    我的处理方法:
    首先:在control flow中,使用数据流任务和文件传输任务,实现了单个acess库中表的数据导入到sql server 2005 中的对应表中,同时数据成功导入后把文家移到另外的一个文件夹中。
    然后:我采用foreach容器, 
    配置foreach容器操作类型为文件类型,添加变量,定义为文件变量
    再次,修改数据流任务中的源连接管理器的变量如图所示:
     
    具体的connectionstring为:"Data Source="+ @[用户::filename]+";Provider=Microsoft.Jet.OLEDB.4.0;"
    文件源的连接管理也修改了,
    ―――――――――――――――――――――――――――――――――――――――
    编译说oledb的连接出错,
    错误如下:
    已获得OLE DB 记录。源:“Microsoft JET Database Engine”Hresult: 0x80004005 说明:“找不到文件'E:\上报数据\南宁市本级南宁市第三十三中学高中贫困生'。”。
    错误: 0xC020801C,位于数据流任务, OLE DB 源[1]: 对连接管理器“soure oledb”的AcquireConnection 方法调用失败,错误代码为0xC0202009。
    错误: 0xC0047017,位于数据流任务, DTS.Pipeline: 组件“OLE DB 源”(1) 未能通过验证,返回的错误代码为0xC020801C。
    错误: 0xC004700C,位于数据流任务, DTS.Pipeline: 一个或多个组件未能通过验证。
    错误: 0xC0024107,位于数据流任务: 任务验证期间出错。
    警告: 0x80019002,位于Foreach 循环容器: Execution 方法成功,但出现的错误数(5)达到了允许的最大值(1),因此导致失败。当错误数达到MaximumErrorCount 中指定的数目时将发生这种情况。请更改MaximumErrorCount 或纠正这些错误。
    警告: 0x80019002,位于Package: Execution 方法成功,但出现的错误数(5)达到了允许的最大值(1),因此导致失败。当错误数达到MaximumErrorCount 中指定的数目时将发生这种情况。请更改MaximumErrorCount 或纠正这些错误。
    SSIS 包“Package.dtsx”已完成: 失败。
    程序“[2968] Package.dtsx: DTS”已退出,返回值为0 (0x0)。
      

  3.   

    SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation 
    2Services(数据转换服务),然后选择  czdImport Data(导入数据)。 
    3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。 
    4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。 
    5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。 
    6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。下一步,完成。Transact-SQL语句进行导入导出:1.在SQL SERVER里查询access数据:
    -- ======================================================
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
    -------------------------------------------------------------------------------------------------
    2.将access导入SQL server 
    -- ======================================================
    在SQL SERVER 里运行:
    SELECT *
    INTO newtable
    FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 
          'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
    -------------------------------------------------------------------------------------------------
    3.将SQL SERVER表里的数据插入到Access表中
    -- ======================================================
    在SQL SERVER 里运行:
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 
    (列名1,列名2)
    select 列名1,列名2  from  sql表
    实例:
    insert into  OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'C:\db.mdb';'admin';'', Test) 
    select id,name from Test
    INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
    SELECT *
    FROM sqltablename
    -------------------------------------------------------------------------------------------------
      

  4.   

    知道,想用ssis任务定时扫描文件夹导入库中,有什么好的办法解决没有?
      

  5.   

    你能给一个例子给我看看,我用平面文件源和excel源都成功了,但是acess源没有成功。我自己觉得应该是oledb源那里的问题,但是没有修改成功,问题还没有找到。
      

  6.   

    提示出错的原因是:[OLE DB 源 [1]] 错误: 对连接管理器“soure oledb”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。 
      

  7.   

    你看看现在初始时.Ole Db的ConnectionString的值是什么.
      

  8.   

    Data Source=;Provider=Microsoft.Jet.OLEDB.4.0;