比方说,我已经有一个sql server的数据库文件:test_data.mdf 及 test_log.ldf 在程序中如何用代码实现附加到SQL server中,而不是用企业管理器?

解决方案 »

  1.   

    调用系统存储过程,并注意文件路径
    sp_attach_db 'test', 'test_data.mdf ', 'test_log.ldf'
      

  2.   

    sp_attach_db
    将数据库附加到服务器。语法
    sp_attach_db [ @dbname = ] 'dbname'
        , [ @filename1 = ] 'filename_n' [ ,...16 ]参数
    [@dbname =] 'dbname'要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。 [@filename1 =] 'filename_n'数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。返回代码值
    0(成功)或 1(失败)示例
    下面的示例将 pubs 中的两个文件附加到当前服务器。EXEC sp_attach_db @dbname = N'pubs', 
       @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
       @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
      

  3.   

    我试了下
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    begin
         EXEC sp_attach_db @dbname = N'SC',
         @filename1 = N'E:\SQL_pc\sc_data.mdf',
         @filename2 = N'E:\SQL_pc\sc_log.mdf'
    end;执行时出错提示:
      Undecllared identifier:"EXEC"请再帮看看?
      

  4.   

    用ADO控件提交这个存储过程调用语句,具体有几种方法
    1、ADOConnection.Execute
    2、ADOQuery.ExecSQL
    ...
      

  5.   


    膜拜!
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    var
    s:string;
    qry:TADOQuery;
    begin
    qry:=TADOQuery.Create(nil);
    qry.ConnectionString:='';//理解字符串
      s:='EXEC sp_attach_db @dbname = N''SC'','
      +'@filename1 = N''E:\SQL_pc\sc_data.mdf'','
      +'@filename2 = N''E:\SQL_pc\sc_log.mdf''';
    qry.sql.Text:=s;
    qry.ExecSQL;
    freeandnil(qry);
    end;
      

  6.   


    谢谢老大了,我试了下,但执行的时候出这个错误 “Missing Connection。。”
     
     
      

  7.   

    qry.ConnectionString:='';//填写连接数据库字符串
     
      

  8.   


    我这样写的,又说数据库不存,请帮看看那里写错了.....procedure TForm1.SpeedButton1Click(Sender: TObject);
    var
       s:string;
       qry:TADOQuery;
    begin
       try
       qry:=TADOQuery.Create(nil);
       qry.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;'+
                             'Persist Security Info=False;Initial Catalog=SC;'+
                             'Data Source=LZZYG-SERVER;Use Procedure for Prepare=1;'+
                             'Auto Translate=True;Packet Size=4096;Workstation ID=MAIN;'+
                             'Use Encryption for Data=False;'+
                             'Tag with column collation when possible=False';
       s:='EXEC sp_attach_db @dbname = N''SC'','
          +'@filename1 = N''E:\SQL_pc\sc_data.mdf'','
          +'@filename2 = N''E:\SQL_pc\sc_log.mdf''';
       qry.sql.Text:=s;
       qry.ExecSQL;
       finally
       freeandnil(qry);
       end;
    end;