我使用的数据库是本地sqlserver,应用流程是这样的:
程序中要把数据库中的数据导出到一个文件中,上报到上级单位,上级单位也是使用该程序,数据库也是
sqlserver,上级单位再把文件中的数据提取导入(不是还原,没有就增加,有就更新)到它的数据库中。
有两种方法:
一种是直接通过sql语句把数据备份导出,上报到上级后,上级建一个临时数据库,将备份数据库恢复到临时数据库中,然后通过临时数据库将数据导入到主数据库;这样有一个问题,备份导出的数据库和临时数据库的名称肯定不一样,那么在导入时会不会出问题?我也试了一下,在恢复到临时数据库时老是报“无法重写xxx.mdf文件,xxx数据库正在使用中”,xxx数据库是sqlserver中的主数据库,备份导出的数据库也是xxx,临时数据库取得是另外一个名称。
另外一种是将access数据库作为中介,但是这样效率可能不高,特别是在大数据量的时候;给些建议?

解决方案 »

  1.   

    我也做过这样的东西,我是采用的ACCESS做中间数据库,效率感觉一般,主要是不容易出错。推荐采用吧
    至于用SQL直接导数据,你可以跟踪一下SQL企业管理器是怎么导出导入数据的,它应该是把这些功能都封装在存储过程里面。调用它的存储过程应该不会出错了。
      

  2.   

    贴到SQL版中去效率比这儿高的多
      

  3.   

    begin
        Str := 'restore database test from disk = '+ #39 + edit1.Text + #39 + ' with replace, '
           + 'move ' + #39 + 'test_data' + #39 + ' to ' + #39 + 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Data.MDF' + #39
           + ',move ' + #39 + 'test_log' + #39 + ' to ' + #39 + 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' + #39;
        with Adoquery1 do
        begin
          close;
          sql.Clear;
          sql.Text := Str;
          try
            execsql;
            application.MessageBox('成功','asdf',mb_ok+ mb_iconinformation);
          except
            application.MessageBox('错误','asdf',mb_ok+ mb_iconstop);
          end;
        end;
      

  4.   

    没办法
    我只有用access做中介了
    我试验了一下,如果原来的数据库是db111,备份后,还原到db222没问题,但是如果你新建一个库db222,表都与db111一样,还原到db222就有问题。好想备份后的文件保存有原来的数据库名称似的,导入到新库就不行。
    感谢各位。
    怎么办呢
    我又要送分了
    呵呵