当前位置:主页>仓库管理软件> 列表

怎样在程序中将sqlserver中的数据备份到客户端?谢谢

企业管理软件版1楼: 我想用程序在客户端把数据库中的数据备份到客户端,哪位大虾可以帮助小弟一下,好吗?
小弟在线等,谢谢了

2楼: //备份
query1.DatabaseName:=''posserver'';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(''backup database pos to disk=:a'');
query1.Params[0].Value:=edit1.Text;
query1.ExecSQL;
messagebox(handle,''备份成功'',''提示'',mb_iconinformation);


//恢复
ResAdt := TadoQuery.Create(Nil);
str:=''Provider=SQLOLEDB.1;Persist Security Info=False;''
+''User ID=sa;Initial Catalog=master;Data source=.'';
with ResAdt do
begin
ConnectionString:=str;
Close; //切断数据库连接
SQL.Clear;
SQL.Add(''ALTER DATABASE pos SET OFFLINE WITH ROLLBACK IMMEDIATE'');
ExecSQL;
Close;
SQL.Clear;
SQL.Add(''Restore Database Pos From Disk=:a With Replace'');
Parameters[0].Value:=edit1.Text;
ExecSQL;
end; 如免费财务软件下载

3楼: 大虾不可以的啊,那样只能备份到服务上啊,各位高手帮帮小弟啊

4楼: 怎么没有人知道吗?小弟在这里谢谢大家,有没有知道的啊?我真是急着用!!!!!1

5楼: 只能备份完了再考贝备份文件了,要不你就在客户端自己导数据出来生成一个文本文件的方式来进行备份。

6楼: 曾经遇到这个问题,还没有解决.

企业管理软件版7楼: 下面是我做的一段把SQL SERVER数据库备份到本地的代码,可能代码比较难懂,详细可以在白天跟我联系(QQ:287076851 加我的时候请发"程序设计")

//TODO:处理数据备份
if CheckBoxDBF.Checked then
begin
try
try
if EditTargeDir.Text<>'''' then
begin
AdoQueryBackUp:=TAdoQuery.Create(frmDataBakup);
AdoQueryBackup.Connection:=frmDM.ADOConSQL;//frmDM.ADOConSQL是已经连接到要备份数据库的ADO连接
frmInputBox.LabelPara.Caption:=''请输入本机的Administrator密码:'';
frmInputBox.EditInput.PasswordChar:=''*'';
frmInputBox.Caption:=''请输入密码'';
if frmInputBox.ShowModal=mrok then
AdminPW:=frmInputBox.EditInput.Text;
//备份远程SQL Server到本地
try
Winexec(pchar(''net share test=''+ExtractFileDir(EditTargeDir.Text)),SW_HIDE);//共享本地保存数据的文件夹,这是必要的
except
on E:Exception do
Application.MessageBox(pchar(E.Message),''Net share ERROR'');
end;

try
Winexec(pchar(''net use \\''+PublicElement.LocalIP+''\test ''+AdminPW+'' /user:domain\Administrator''),SW_HIDE);//连接到刚才的共享,LocalIP是取得当前计算机IP的函数
except
on E:Exception do
Application.MessageBox(pchar(E.Message),''Net Use ERROR'');
end;

try
AdoQueryBackup.SQL.Clear;
AdoQueryBackup.SQL.Text:=''backup database YYFD to disk=''+''''''''+''\\''+PublicElement.LocalIP+''\test\''+ExtractFileName(EditTargeDir.Text)+'''''''';//执得备份SQL语句
AdoQueryBackup.ExecSQL;
except
on E:Exception do
Application.MessageBox(pchar(E.Message),''Backup ERROR'');
end;

//备份结束
end;
except
on E:Exception do
begin
Application.MessageBox(pchar(E.Message),''数据库备份出错'') ;
Raise;
end;
end;
finally
begin
AdoQueryBackup.Close;
AdoQueryBackup.Free;
end;
end;
Application.MessageBox(''数据库备份已经成功完成!'',''操作成功'');
end
else
if CheckBoxSQL.Checked then
begin
//TODO:将数据备份到指定其他SQL服务器中
Application.MessageBox(''程序暂时没有提供备份到其他服务器的功能!'',''提示'');
end;

8楼: cback.commandText:=''backup database ''+DataBase+'' to disk=''+QuotedStr(Trim(edit1.text));
try
cback.Execute;
application.MessageBox(''備份完畢'',''數據管理'',0);
except
Err:=ExceptObject as Exception;
Application.ShowException(Err);
end;

edit1.text為備份路徑,要備份到客戶端其實很簡單,只要在客戶端電腦設一個共享文件夾,能讓服務器訪問,例;客戶端電腦名稱為clwlyc,共享文件夾為clw,則備份路徑為\\clwlyc\clw\DataName.BAK

9楼: 做一個存儲過程
以 sysobjects 中 xtype = ''U'' 作爲循環條件 取得 name 字段值 作爲 tablename
調用下面的語句:
EXEC master..xp_cmdshell ''bcp "yourdatabase..tablename" out e:\tablename.txt -U sa -P password -c -t$ -r$\n -e errline.txt -S YourServerIP''

exec 可以使用動態的SQL
恢復數據同上

10楼: 先在你的客户端建一个共享文件夹比如 test

backup database databaseName to disk =''\\机器名字\test\123.bak''

11楼: 提供解决思路:(三层备份方法)
1.先备份数据库至服务器abc.dat
2.调用远程方法用zlib压缩一下abc2.dat
3.把abc2.dat分割成32k大小保存至表
4.select 取得上面N个文件完成合并
5.用zlib解压
如果是二层在局域网内就比较好办了直接拷贝吧

12楼: 提供思路﹕先備份到服務器上﹐再用流的方式讀到本地來。 如财务软件免费下载