要在delphi6中开发,想使用dts,因为使用openrowset不能异地导入

解决方案 »

  1.   

    这样不行吗?SELECT * 
    FROM OpenDataSource( 'MICROSOFT.JET.OLEDB.4.0',
     'Data Source="Excel文件所存放的路径";User ID=;Password=;Extended properties=Excel 5.0')...SheetName$
      

  2.   

    我想问一下,导入excel的 DTS 的TSQL什么写
      

  3.   

    把远程文件名换成网络路径名试试,例如:当使用远程服务器上的异源数据时,必须使用异源数据的网络路径,即:
    \\网络名\共享名\文件名
    以EXECL为例:
    假设IP地址为192.168.16.166的远程客户端的D盘的test文件夹下有一个EXECL文件Books1.xls,
    本机IP地址为192.168.16.2,要读取该远程Books1.xls文件到本机的SQLSERVER中,则可
    这样做:
    第一步:将192.168.16.166远程客户端的D:\test文件夹设置为共享,共享名为test;
    第二步:修改192.168.16.166远程客户端的WINDOWS防火墙设置,在<例外>中允许<文件和打印机共享>;
    第三步:设置网络文件路径:方法1:右键点击我的电脑->映射网络驱动器,假设网络驱动器为Z,映射路径为该远程客户端
    的D:\test文件夹,然后这样进行查询:
    SELECT *  FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=z:\book1.xls;Extended Properties=Excel 8.0')...[Sheet1$]
    动态SQL:
    declare @sql varchar(1000),@NetPathFile varchar(100)
    set @NetPathFile = 'z:\book1.xls'
    set @sql = 
    'SELECT *  FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',
    ''Data Source=' + @NetPathFile + ';Extended Properties=Excel 8.0'')...[Sheet1$]'
    EXEC(@sql)方法2:直接使用计算机名或远程计算机的IP:
    SELECT *  FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=\\192.168.16.166\test\book1.xls;Extended Properties=Excel 8.0')...[Sheet1$]
    动态SQL:
    declare @sql varchar(1000),@NetPathFile varchar(100)
    set @NetPathFile = '\\192.168.16.166\test\book1.xls'
    set @sql = 
    'SELECT *  FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',
    ''Data Source=' + @NetPathFile + ';Extended Properties=Excel 8.0'')...[Sheet1$]'
    EXEC(@sql)
    以上在本机测试通过.测试环境:
    简体中文WindowsServer2003sp1 + 简体中文SQLSERVER2000sp4 + 局域网