不用"企业管理器",就写个程序导入!或者将分离出来的sql脚本导入数据库..也就是说,写个程序,去创建一个数据库和里面的表.

解决方案 »

  1.   

    把分离出来xxx.MDF和xxx.LDF导入到数据库?是不是要附加数据库?
    -----------------------------------------------------------
    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(失败)结果集
    无注释
    只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 CREATE DATABASE。如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。权限
    只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。示例
    下面的示例将 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'
      

  2.   

    把分离出来xxx.MDF和xxx.LDF导入到数据库中
    -----------------------------------------
    你的意思就是把这个数据库附加到sqlserver服务器中,对吗?
    给你我写的代码,delphi 6下测试通过!
    函数为:
    function AttachDB(Form1:TForm;file1,file2:string;saPwd:string):boolean;
    var
      sql:string;
      ADOQuery1:TADOQuery;
    begin
      ADOQuery1 := TADOQuery.Create(Form1);
      ADOQuery1.ConnectionString := 'Provider=SQLOLEDB.1;Password='+saPwd+';Persist Security Info=True;User ID=sa;Data Source=.';
      sql := 'EXEC sp_attach_db @dbname = N''Infant'',@filename1 = N'''+ file1+''',@filename2 = N'''+file2+'''';
      try
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add(sql);
        ADOQuery1.ExecSQL;
        AttachDB := true;
      except
        AttachDB := false;
      end;
    end;//程序中调用
    if AttachDB(Self,'xxx.mdf','xxx_log.LDF',sapwd) = false then//sapwd为sql服务器密码
    begin
      Showmessage('Error');
      Exit;
    end;
      

  3.   

    其实就是用adoquery解释执行sql脚本function Tinitdataw.crdatabasesql:string;
    var
    s:string;
    drv:string;
    begin
    drv:=ComboBox1.Text;//服务器上数据库文件名
    s:=LabeledEdit3.Text;//要建立的数据库名
    result:='IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'+''''+
    s+''''+')'+'DROP DATABASE ['+s+'] '+#13+'  '+
    'CREATE DATABASE ['+s+'] ON (NAME = N'+''''+s+'_Data'+''''+
    ',FILENAME = N'+''''+drv+s+'_Data.MDF'+''''+
    ', SIZE = 5, FILEGROWTH = 10%) LOG ON (NAME = N'+''''+s+'_Log'+''''+
    ', FILENAME = N'+''''+drv+s+'_Log.LDF'+''''+' , SIZE = 1, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_AS ';
    end;
    procedure Tinitdataw.initdatabaseExecute(Sender: TObject);
    var
    ts:tstringlist;
    i:integer;
    begin
    ts:=tstringlist.create;
    try
    ADOQuery1.Close;
    AALabel1.Caption:='建立数据库!';
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(crdatabasesql);
    ADOQuery1.ExecSQL;
    AALabel1.Caption:='数据库建立完毕!';
    update;
    ADOQuery1.SQL.Clear;
    AALabel1.Caption:='准备初始化数据库...';
    update;
    ts.loadfromfile('初始化数据库.sql');
    for i:=0 to ts.Count-1 do
    begin
            if ts[i]<>'GO' then
                  ADOQuery1.SQL.Add(ts[i]) else
                  begin
                  ADOQuery1.ExecSQL;
                  AALabel1.Caption:='完成操作:'+inttostr(i)+'行';
                  update;
                  adoquery1.SQL.Clear;
                 end;
    end;
    showmessage('初始化完成!,系统可以使用了。');
    finally
    ts.free;
    end;
    end;
      

  4.   

    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'