读书人

MSSQL数据库附加解决办法

发布时间: 2012-04-06 12:22:24 作者: rapoo

MSSQL数据库附加
源程序 try
DataStr:=Edit3.text+'_Data.MDF';
LogStr:=Edit3.text+'_Log.LDF';
Copyfile(PChar('E:\php\SK_Data.MDF'),PChar(Edit3.text+'_Data.MDF'),false) ;
Copyfile(PChar('E:\php\SK_Log.LDF'),PChar(Edit3.text+'_Log.LDF'),false) ;
with ADOQuery1 do
begin
SQL.Clear ;
SQL.add('sp_attach_db @dbname=N'+''+':yourdbname'+''+' , ');
SQL.add('@filename1=N'+':data'+' , ');
SQL.add('@filename2=N'+':log');
Parameters.ParamByName('yourdbname').Value :=''''+Trim(Edit1.Text )+'''';
Parameters.ParamByName('data').Value :=''''+DataStr+'''';
Parameters.ParamByName('log').Value :=''''+LogStr+'''';
end;
ADOQuery1.ExecSQL ;
ShowMessage('成功') ;
except
ShowMessage('失败');
Self.Close ;
end;
MSSQL事件器捕抓到:
exec sp_executesql N'sp_attach_db @dbname=N@P1 ,
@filename1=N@P2 ,
@filename2=N@P3
', N'@P1 varchar(5),@P2 varchar(28),@P3 varchar(27)', '''hao''', '''D:\skerp\data\hao_Data.MDF''', '''D:\skerp\data\hao_Log.LDF'''
提示语法错误,

直接用这个 ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.add('sp_attach_db @dbname=N'+''+'''yourdbname'''+''+' , ');
ADOQuery1.SQL.add('@filename1=N'+''''+'D:\skerp\data\hao_Data.MDF'+''''+' , ');
ADOQuery1.sql.add('@filename2=N'+''''+D:\skerp\data\hao_Log.LDF''') ;
ADOQuery1.ExecSQL ;
是正确。
谢谢!

[解决办法]
如果后半部分正确,那应该是前面copy过程,出错了吧,比如说目标文件已经有了,所以copy不过去,你可以用断点调试一下,看看究竟是哪里出问题。
[解决办法]
''''

读书人网 >.NET

热点推荐