高手请过来 请问如何实现从一个数据库把数据转到另一个服务器上的相同结构的数据库,用delphi实现,用BDE。要如何设置数据库,如何处理事物?给代码提示。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是备份方式,数据库-》另一台机器的空的数据库的话(有表和结构,无记录的),一行SQL搞定一个表。 SQL Server?先备份,uses adodb,db;function repl_substr(sub_old, sub_new, s: string): string; //把sub_old换成sub_new,后面有用。function BackupSQLDataBase(connstr_sql,DatabaseName,Backup_FileName:string):Boolean;//数据库备份函数//SQL数据数据库备份,connstr_sql是ADO控件的connectionstring,DatabaseName是数据库名称,//Backup_FileName要备份到的目 标文件function RestoreSQLDataBase(connstr_sql,DatabaseName,Restore_FileName:string):Boolean;//数据库恢复函数//Restore_FileName以前备份的数据库文件,implementation如果没有数据库,就先创建数据库IF EXISTS (SELECT *FROM sysdatabasesWHERE name = '数据库名称')BEGINDROP database 数据库名称END;CREATE database 数据库名称;再还原:function repl_substr(sub_old, sub_new, s: string): string;var i: integer;begin repeat i := pos(sub_old, s); if i > 0 then begin delete(s, i, Length(sub_old)); insert(sub_new, s, i); end; until i < 1; Result := s;end;function BackupSQLDataBase(connstr_sql,DatabaseName,Backup_FileName:string):Boolean;var//备份SQL数据库SQL数据数据库备份,connstr_sql是ADO控件的connectionstring,DatabaseName是数据库名称,//Backup_FileName要备份到的目标文件aADOQuery:TADOQuery;begintry aADOQuery:=TADOQuery.Create(nil); aADOQuery.Close; aADOQuery.ConnectionString:=connstr_sql; aADOQuery.SQL.Clear; aADOQuery.SQL.Add('backup database '+DatabaseName+' to disk = ' + '''' + Backup_FileName + ''' with format'); Try aADOQuery.ExecSQL; Result:=true; Except Result:=false; exit; end; finally aADOQuery.Free; end;end;function RestoreSQLDataBase(connstr_sql,DatabaseName,Restore_FileName:string):Boolean;var//数据库恢复函数,estore_FileName以前备份的数据库文件aADOQuery:TADOQuery;begintry aADOQuery:=TADOQuery.Create(nil); aADOQuery.Close;//恢复数据库不能打开数据库,要打开系统数据库master,把连接字符串如adoconnetion的connectionstring中的数据库名称换成"master"数据库 aADOQuery.ConnectionString:=repl_substr(DatabaseName,'master',connstr_sql); aADOQuery.SQL.Clear; aADOQuery.SQL.Add('RESTORE DATABASE '+DatabaseName+' from disk = ' + '''' + Restore_FileName + ''''); Try aADOQuery.ExecSQL; Result:=true; Except Result:=false; exit; end; finally aADOQuery.Free; end;end;end. 参考一下 谢谢insert2003(高级打字员) 。不好意思,题目说的不是很清楚,补充一下。我是要转移部分表的数据,不需要全部表的转移。欢迎指教! 在DELPHI中引入DTS的包,然后调用DTS进行数据的导入 "我是要转移部分表的数据,不需要全部表的转移。"这句话的意思就是我要先从本地服务器上找出符合条件的数据来,然后通过delphi程序把数据插入到远程服务器上,要有事务处理。 insert 目的表select * from 表where 条件或者:用写程序一条一条增加即可.用两个Query等. query里SELECT *FROM OPENDATASOURCE('SQLOLEDB','DataSource=sql另一个实例;User ID=sa;Password=').数据库名.dbo.shebei qizhanfeng(glacier)和我想的一样:) 不过必须要目标SQL机器上有一样的表和结构才行的。 准备学delphi 请推荐几本书 如何在模式窗口关闭时刷新原始页面的数据? 有办法实现“按钮点击”这个动画播放的函数吗? 关于DBGridEH的问题,100分奉上。 如何捕获stringGrid表头的按击事件。。 我用NMUDP,用try...except...也无法截获“stream write error”,怎么办? 怎么使用fastreport做运行时可编辑的报表? 小弟才学delphi,提个问题。关于复制、粘帖 Delphi 5 在 Windows 2000 Advanced server上的安装问题 ! 请高手帮助我!! 散分,兄弟们 在access中如何给一个字段默认值?
数据库-》另一台机器的空的数据库的话(有表和结构,无记录的),
一行SQL搞定一个表。
adodb,db;
function repl_substr(sub_old, sub_new, s: string): string; //把sub_old换成sub_new,后面有用。
function BackupSQLDataBase(connstr_sql,DatabaseName,Backup_FileName:string):Boolean;//数据库备份函数
//SQL数据数据库备份,connstr_sql是ADO控件的connectionstring,DatabaseName是数据库名称,
//Backup_FileName要备份到的目 标文件
function RestoreSQLDataBase(connstr_sql,DatabaseName,Restore_FileName:string):Boolean;//数据库恢复函数
//Restore_FileName以前备份的数据库文件,
implementation
如果没有数据库,就先创建数据库IF EXISTS (SELECT *FROM sysdatabasesWHERE name = '数据库名称')BEGINDROP database 数据库名称END;CREATE database 数据库名称;
再还原:
function repl_substr(sub_old, sub_new, s: string): string;
var
i: integer;
begin
repeat
i := pos(sub_old, s);
if i > 0 then
begin
delete(s, i, Length(sub_old));
insert(sub_new, s, i);
end;
until i < 1;
Result := s;
end;
function BackupSQLDataBase(connstr_sql,DatabaseName,Backup_FileName:string):Boolean;
var
//备份SQL数据库SQL数据数据库备份,connstr_sql是ADO控件的connectionstring,DatabaseName是数据库名称,
//Backup_FileName要备份到的目标文件
aADOQuery:TADOQuery;
begin
try
aADOQuery:=TADOQuery.Create(nil);
aADOQuery.Close;
aADOQuery.ConnectionString:=connstr_sql;
aADOQuery.SQL.Clear;
aADOQuery.SQL.Add('backup database '+DatabaseName+' to disk = ' + '''' + Backup_FileName + ''' with format');
Try
aADOQuery.ExecSQL;
Result:=true;
Except
Result:=false;
exit;
end;
finally
aADOQuery.Free;
end;
end;
function RestoreSQLDataBase(connstr_sql,DatabaseName,Restore_FileName:string):Boolean;
var//数据库恢复函数,estore_FileName以前备份的数据库文件
aADOQuery:TADOQuery;
begin
try
aADOQuery:=TADOQuery.Create(nil);
aADOQuery.Close;//恢复数据库不能打开数据库,要打开系统数据库master,把连接字符串如adoconnetion的connectionstring中的数据库名称换成"master"数据库
aADOQuery.ConnectionString:=repl_substr(DatabaseName,'master',connstr_sql);
aADOQuery.SQL.Clear;
aADOQuery.SQL.Add('RESTORE DATABASE '+DatabaseName+' from disk = ' + '''' + Restore_FileName + '''');
Try
aADOQuery.ExecSQL;
Result:=true;
Except
Result:=false;
exit;
end;
finally
aADOQuery.Free;
end;
end;
end. 参考一下
不好意思,题目说的不是很清楚,补充一下。
我是要转移部分表的数据,不需要全部表的转移。
欢迎指教!
这句话的意思就是我要先从本地服务器上找出符合条件的数据来,然后通过delphi程序把数据插入到远程服务器上,要有事务处理。
select *
from 表
where 条件或者:用写程序一条一条增加即可.用两个Query等.
SELECT *
FROM OPENDATASOURCE('SQLOLEDB','DataSource=sql另一个实例;User ID=sa;Password=').数据库名.dbo.shebei
和我想的一样:)