偶用DELPHI滴ADOQuery写滴备份数据库里某张表滴数据里碰到滴问题
源程序如下:
procedure TForm1.BackEmpClick(Sender: TObject);
var
a,str,str1:string;
FileNam:string;
begin
AQ_query.SQL.Clear;
str:='''bcp "lamsun..employee" Out'; //
str1:=' '+'-c -Usa'''; //连接数据库用户。
a:='EXEC master..xp_cmdshell'+' '; //启动SQL备份表滴存储过程
AQ_query.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=baoyangb;Data Source=ntserver';
SaveDialog1.Filter:='*.txt|*.txt';
IF SaveDialog1.Execute then
begin
FileNam:=SaveDialog1.Filename; //把数据表备份成指定目录下命名滴文件
FileNam:=FileNam + '.txt'; //给文件加扩展名为TXT
str:=str + ' ' + FileNam; //组合SQL语句。
str:=a+str;
Str:=str+str1;
end;
AQ_query.SQL.Text:=str;
try
AQ_query.ExecSQL;
showmessage('Backup '+ExtractFileName(FileNam) +' OK');
except
showmessage('Backup '+ExtractFileName(FileNam)+' Failed.');
end;
end;执行是莫问题滴。
ntserver是另一台电脑。但就是备份不出文件。。狂郁闷中。望那位大侠解决。
源程序如下:
procedure TForm1.BackEmpClick(Sender: TObject);
var
a,str,str1:string;
FileNam:string;
begin
AQ_query.SQL.Clear;
str:='''bcp "lamsun..employee" Out'; //
str1:=' '+'-c -Usa'''; //连接数据库用户。
a:='EXEC master..xp_cmdshell'+' '; //启动SQL备份表滴存储过程
AQ_query.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=baoyangb;Data Source=ntserver';
SaveDialog1.Filter:='*.txt|*.txt';
IF SaveDialog1.Execute then
begin
FileNam:=SaveDialog1.Filename; //把数据表备份成指定目录下命名滴文件
FileNam:=FileNam + '.txt'; //给文件加扩展名为TXT
str:=str + ' ' + FileNam; //组合SQL语句。
str:=a+str;
Str:=str+str1;
end;
AQ_query.SQL.Text:=str;
try
AQ_query.ExecSQL;
showmessage('Backup '+ExtractFileName(FileNam) +' OK');
except
showmessage('Backup '+ExtractFileName(FileNam)+' Failed.');
end;
end;执行是莫问题滴。
ntserver是另一台电脑。但就是备份不出文件。。狂郁闷中。望那位大侠解决。
在SQL滴Query Analyzer备份语句
exec master..xp_cmdshell 'bcp "newhj..employee" out c:\bcdeg.txt -C -Usa'。
有个参数-S滴,
有用否?
上面:maste为数据库名称,sysfiles为数据表,D:\sysfiles.txt为运行程序所在机器的保存文件名,
-t后面的逗号为分隔符, Hejh为远程数据库机器名,sa为用户名和密码。
注意如果有权限可以先
winexec('net use \\DataBaseserver password /user:administrator');