sqlserver的备份+xml!300(分)(300分)

  • 主题发起人 主题发起人 yangh
  • 开始时间 开始时间
Y

yangh

Unregistered / Unconfirmed
GUEST, unregistred user!
如何对sqlsever表中的数据进行备份和回复,备份好作,关键是恢复!我把
数据savetofile生成文件,但是load 不仅来,又用xml maper生成了一个xtr,但是导出
可以,倒入在哪里啊!那位大人不吝赐教!
 
要恢复整个数据操作也可用一个查询控件做:
请参照SQL语句:
restore database {databasename}
from backup_device
with
file=filename,
move 'logical_file_name' to 'operating_system_file_name'
其下参数随你设置了看情况而定吧!

SQLSERVER
 
你在恢复时查看一下Log文件是否一至。
 
这个好做到,以下是我做的程序里的一个过程,没修改,直接帖了出来,
你将就着看吧。可以实现你的SQL SERVER导出的XML文件再导入到SQL SERVER表中去。
----------------------------------------------------------------------------
procedure TfrmImp.ImpData(Path:string);
var
FileName:string;
strError:string;
XmlCount,iTmp,iField:integer;
begin
XmlCount:=xmlListView.Items.Count;

for iTmp:=XmlCount-1 downto 0 do
begin
FileName:=Path+xmlListView.Items.Item[iTmp].Caption;
ADOTable1.Close;
ADOTable1.TableName:=Copy(xmlListView.Items.Item[iTmp].Caption,1,Length(xmlListView.Items.Item[iTmp].Caption)-4);
try
ADOTable1.Open;

ADOQuery1.LoadFromFile(FileName);
ADOQuery1.First;

while not ADOQuery1.Eof do
begin

ADOTable1.Append;
for iField:=0 to ADOQuery1.FieldCount-1 do
begin
ADOTable1.Fields.Fields[iField].Value:=ADOQuery1.Fields.Fields[iField].Value;
end;

ADOTable1.Post();
ADOQuery1.Next();
end;

xmlListView.Items.Item[iTmp].Delete;
Application.ProcessMessages;
except
strError:='导入文件《'+FileName+'》出错';
Application.MessageBox(Pchar(strError),'信息',MB_ICONERROR+MB_OK);
end;

end;

end;
------------------------------------------------------------------------------


 
To yangh,
备份时最好备用SQLSERVER 的命令
 
多人接受答案了。
 
gonghh说的对,简单的说就是用一个Adoquery装入数据,装入数据后,表结构和数据都在内存中了,然后用另一个AdoQuery循环读取第一个AdoQuery中的数据往数据库中写数据。
s := 'INSERT INTO ' + tablespace + filename + ' (' ;
//字段列表
for i := 0 to fieldnum - 1 do
begin
s := s + UpperCase(Q_cx.Fields.FieldName);
if i < fieldnum - 1 then
s := s + ','
else
s := s + ') VALUES (';
end;
//值列表
for i := 0 to fieldnum - 1 do
begin
s := s + ':' + UpperCase(Q_cx.Fields.FieldName);
if i < fieldnum - 1 then
s := s + ','
else
s := s + ')';
end;
...
Q_cx.First;
while not Q_cx.eof do
begin
Q_do.Close;
Q_do.SQL.Clear ;
Q_do.Parameters.Clear ;
Q_do.SQL.Add(s);
//参数声明例子
Q_do.Parameters.ParamByName(UpperCase(Q_cx.Fields.FieldName)).Value := Q_cx.FieldByName(UpperCase(Q_cx.Fields.FieldName)).Value;
...
Q_do.ExecSQL ;
Q_cx.Next;
end;
 
后退
顶部