我的数据库服务器用的SQL 2000,在服务器上建数据库SJZX,在数据库中新建存储过程完成大容量导入\导出(用的是BCP和Bulk insert),再用DELPHI调用存储过程完成操作。
在服务器端(装有SQL2000,和用DELPHI编译的应用程序)运行正常,把应用程序放到客户机上运行就报错。
我导EXCEL用的语句:
insert OPENDATASOURCE(
''SQLOLEDB'',
''Data Source='+@au_server+';User ID=sa;Password=''
).sjzx.dbo.'+@au_dbname+'
select   *   from   OpenRowSet(''microsoft.jet.oledb.4.0'',''Excel 5.0;HDR=yes;database='+@au_xlspath+';'',''select * from [Sheet1$]'')' 
报错:"未能创建OLE DB提供程序'MSDASC'的实例
导入TXT用的语句是:
'bulk insert sjzx..'+@au_dbname+' from '''+@au_txtpath+''' 
with(FIELDTERMINATOR = '''+@au_splitch+''',ROWTERMINATOR = '''+@au_row+''')'
报错:"未能进行大容量插入,因为未能打开'c:\111.txt',操作系统错误代码21(设备未就绪)"(c:\111.txt存在)大虾们帮帮忙,客户催着呢!~~~

解决方案 »

  1.   

    给我看看你这两个参数的赋值
    +@au_server
    +@au_xlspath
      

  2.   

    导EXCEL的:
    if opendialog1.Execute then
       edit1.Text:=OpenDialog1.FileName; 
    with DataModule1.adoquery2 do
            begin
              close;
              sql.Clear;
              sql.Add('exec EXCEL_insert_tmp '''+MainForm.serverIp+''',''wap_info_tmp'','''+edit1.Text+'''');
          {    ShowMessage(sql.text);  }
              ExecSQL;
            end;
    导TXT的:
            with DataModule1.adoquery2 do
              begin
                close;
                sql.Clear;
                sql.Add('exec Txt_insert_tmp ''wap_Info_tmp'','''+edit1.Text+''','''+split_ch+''','''+ char(10)+'''');
                {ShowMessage(sql.text);  }
                ExecSQL;
              end;
      

  3.   

    把show出来的sql贴出来,我看看