关于数据表的备份和恢复问题!急急急!!!(60分)

  • 主题发起人 主题发起人 midnightzero
  • 开始时间 开始时间
M

midnightzero

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个工具,可以对任意服务器上任意数据库中的一个或多个数据表进行备份、恢复
和转换,可以将sqlserver类型库表转化为dbase类型库表。
请问:
一。如何实现对服务器上任意类型数据库的读取?
二。如何实现对数据表的备份。恢复和转换?
我用的是ADO+SQL SERVER2000。
 
啊!?没有人理我啊![:(]
请各位大虾帮帮忙吧,小弟真是急得焦头烂额啦!一定给高分!!!
 
用 TBatchMove
 
第二个问题
可以在SQL Server 企业管理器是建自动备份任务,也在程序写代码,
备份
Query1.close;
Query1.sql.clear;
Query1.sql.add('BACKUP DATABASE mydase TO mmaster WITH INIT');
Query1.ExecSQL;
恢复
Query1.close;
Query1.sql.clear;
Query1.sql.add('RESTORE DATABASE mydase FROM DISK = ''D:/mmaster.bak''');
Query1.ExecSQL;
mydase 是数据库 D:/mmaster.bak 备份
 
可是我想将获得的数据表成批处理,将选中的表一一备份成dbf文件。恢复也是一样的。
请问如何实现呢?
 
我作的系统是读文本,因为系统是在WindowsNt系统下运行后,要交给后方在Unixt下运行
 
第一个问题
取出sqlserver上所有用户表并生成本地表:
with Query1 do
begin
close;
Sql.Clear;
Sql.add('select id,Name as Tablename,crdate,refdate from sysobjects where (OBJECTPROPERTY(id, N''IsUserTable'')=1) ');
open;
first;
while not eof do
begin
Query2.close;
Query2.sql.clear;
Query2.sql.add('select * from '+query1.fieldbyname('tablename').asstring );
Query2.open;
Mytable.close;
Mytable.tabletype:=ttdbase;
Mytable.Tablename:='Local'+ query1.fieldbyname('tablename').asstring+'.DBF';
mytable.batchmove(query2,batcopy);
next;
end;


end;

 
不太明白啊:(
请大家继续关注!!!分不够我可以加!!!
 
又有一个问题!请问如何在comboxbox中获得本地数据库名?如何在checklistbox中获得
所选数据库的所有数据表名?
 
获得所有表名
select name from sysobjects where xtype='u'
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1083045

new version of DBBackup, now ADO supported!
 
谢谢大家的关注!第一个问题:获取本地服务器上的用户数据库我已经实现了!我用的是
一下代码,请大家指正不足之处。
adoconnection1.connected:=false;
adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False';
adoconnection1.connected:=true;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select name from sysdatabases where dbid>6');
adoquery1.open;
adoquery1.first;
while not adoquery1.eof do
begin
combobox1.items.add(adoquery1.fieldbyname('name').asstring);
adoquery1.next;
end;
现在的问题是:总是出现这样的错误,小弟不知如何解决,还请大家指教。
弹出系统错误对话框:
error
project Mybackup.exe raised exception class EOleException with message 'BOF
或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。’
process stopped.Use step or Run continue.
 
哎呀,麻烦大家了,我又有了新问题。应用drivecombobox和directorylistbox控件获得文件
存放的目录,用了以下代码:DirectoryListBox1.Drive:=DriveComboBox1.Drive;可是当我
选择驱动器为A盘时,提示以下错误。虽然我知道软驱内不放软盘是一定会出错的,但我想用
对话框提醒用户注意软驱中没有盘的情况。请大家帮帮我这个菜鸟吧:)
提示错误的对话框:
error
project Mybackup.exe raised exception class EInOuterror with message'I/O error
1235'.process stopped.Use step or Run continue.
 
请大家继续关注一下,小弟这里先谢过了!
弄明白这些问题,小弟一定送分!!!
 
但这样做好象不现实, 有些数据类型不一样的恢复回去就没有用了字段类型都改了

!!
 
请大家先帮忙解决以上两个错误吧,小弟先行谢过了!!!
 
大家帮着解决解决啊,尤其是关于数据表备份和恢复的问题,是表,不是库啊!

to李颖:
你的控件我装不上啊,总是提示有错,编译时通不过,请教这是怎么回事啊?
 
请大家继续关注!!!
请问,如何将将SQL库中的表导出,另存为一个.dbf文件?
如何将备份的.dbf文件,导入SQL库中以恢复库中的表?
 
对于无软盘而出现的I/OERROR ,可用try .....execpt 处理异常 end 处理,当出现异常是
就能给用户一个提示.
 
请大家帮帮忙!继续关注!!!
 
后退
顶部