出错提示为
以'f:\code\delphisource\xxx.mdf          '
太长,超出范围259

解决方案 »

  1.   

    你可以直接將組合好的命令拿到sql server上執行,如果沒錯,前台也不會出錯,除非有標識符的問題.
      

  2.   

    是不是因为路径后面有空格?加trim试试:
    parameters.ParamByName('@filename1').Value :=Trim(edit3.Text) ;
      

  3.   

    缺少日志文件
    而且建议用TAdoquery比较好
    if (Edit3.Text<>'') and FileExists(Edit1.text) and FileExists(Edit1.text) then
    begin
    ADOQ.Close;
    ADOQ.SQL.Clear;
    Screen.Cursor :=crHourGlass;
    ADOQ.ConnectionString :=Format('Provider=SQLOLEDB.1;Password=%s;'+
                                    'Persist Security Info=True;'+
                                    'User ID=%s;'+
                                    'Data Source=%s',[pwd.Text,nid.Text,ds.Text]);
    ADOQ.SQL.Add('exec sp_attach_db :a,:b,:c');
    ADOQ.Parameters[0].Value :=Edit3.Text;
    ADOQ.Parameters[1].Value :=Edit1.Text;
    ADOQ.Parameters[2].Value :=Edit2.Text;
    ADOQ.ExecSQL;
    Screen.Cursor :=crDefault;
    ShowMessage('SQL Server数据库安装成功');
    end
    else
    MessageDlg('文件不存在,请检查路径是否正确',mtError,[mbOK],0);
      

  4.   

    建议直接使用SQL语句。
    SQLStr:='EXEC sp_attach_db @dbname=N''Cig_Data_Check'',
      @filename1='''+DataFileName+''',
      @filename2=N'''+LogFileName+'''
      

  5.   

    谢谢楼上的两 位,我现在是这样解决的
     try
       connect.Connected :=true;
       statusbar1.SimpleText :='连接成功';
       with query do
       begin
         sql.Clear ;
         sql.Add('create database '+trim(edDataSource.Text));
         sql.Add('on primary (filename="'+trim(edFilename.text)+'")');
         sql.Add('for attach ');
         execsql;
       end;
      statusbar1.SimpleText :='导入成功';
       except
       end;