但我只能实现了创建数据库和表,但存储过程,还有视图等用户自己
定义的东西,怎么能在sql servr导出脚本之后,再用于去创建呢?希望
回答者详细的回答.

解决方案 »

  1.   

    当然可以了
    例如:
    master.dbo.xp_cmdshell 'osql -u 用户名 -p 密码 -i c:\脚本.sql'
      

  2.   

    不是说我不能生成这些脚本,而是不知道怎么用这些脚本去创建一个新的数据库,以方便使用
    SmallHand:说的就是我所需要的。我还得试验成功之后,再结贴.很感谢SmallHand
      

  3.   

    想问一下SmallHand,怎么样在客户端实现这个方法.
      

  4.   

    先建立数据库,然后执行你的代码!注意:用TADOQuery不能使用SQL中的GO关键字
      

  5.   

    SmallHand:
       是不是先  create  database  mydata
                 use   mydata
                 master.dbo.xp_cmdshell 'osql -u 用户名 -p 密码 -i c:\脚本.sql'
                 -u 用户名 -p 密码 -i//是不是可选项
      

  6.   

    真的不懂怎么用?我看了帮助也不懂,只能说我本人笨了!有那为
      能说说SmallHand:的用法吗?
        要求是用导出的SQL脚本,动态创建数据库和表、存储过程、视图等!
      

  7.   

    xp_cmdshell运行命令行sql的系统扩展存储过程
    osql程序,命令行执行sql语句和文件
    你将所有的语句放在脚本.sql然后照他的调用或者直接用shellexecute winexec等调用osql.exe程序,看看帮助就知
      

  8.   

    网上有中文版的SQL文档你趋看看就可以了,楼上的兄弟说的没有错误
      

  9.   

    贴一段给你参考:
    procedure TMainFrm.peCreateDataBase(sAccounts, sPassword: string);
    var
      sSqlScriptFilePath,sSqlScriptFilePath2,sCreateDBstr,sSqlScriptFilePath3,sTempStr: string;
    begin
      sCreateDBstr := Memo1.Lines.Text;
      sSqlScriptFilePath := 'osql /U '+PChar(sAccounts)+' /P '+PChar(sPassword)+' /i '+GetCurrentDir+'\DataSource\CreateDB.sql ';
      sSqlScriptFilePath2 := 'osql /U '+PChar(sAccounts)+' /P '+PChar(sPassword)+' /i '+GetCurrentDir+'\DataSource\BankData.sql ';
      sSqlScriptFilePath3 := 'osql /U '+PChar(sAccounts)+' /P '+PChar(sPassword)+' /i '+GetCurrentDir+'\DataSource\UseDB.sql ';
      Application.MessageBox('正在建立数据库','提示',MB_ICONINFORMATION);
      try
        //winexec(PChar(sSqlScriptFilePath),SW_HIDE);
        with ADOQ_Temp do
          begin
            close;
            sql.Clear;
            sql.Add(sCreateDBstr); {执行建表SQL脚本}
            ExecSQL;
          end;
        //winexec(PChar(sSqlScriptFilePath),SW_HIDE);
        ProgressBar1.Position := 25;
        Sleep(3000);
        ProgressBar1.Position := 50;
        //winexec(PChar(sSqlScriptFilePath3),SW_NORMAL);
        Memo1.Lines.LoadFromFile(GetCurrentDir + '\DataSource\BankData.sql');
        sTempStr := 'USE ' + Edit3.Text;
        Memo1.Lines.Delete(0);
        Memo1.Lines.Insert(0,sTempStr);
        Memo1.Lines.Delete(1);
        Memo1.Lines.Insert(1,'GO');
        Memo1.Lines.SaveToFile(GetCurrentDir + '\DataSource\BankData.sql');
        ProgressBar1.Position := 75;
        winexec(PChar(sSqlScriptFilePath2),SW_HIDE);
        Application.MessageBox('数据库建立完毕','提示',MB_ICONINFORMATION);
        BitBtn2.Enabled := True;
      except
        BitBtn1.Enabled := True;
        Application.MessageBox('数据库建立失败,请重新执行操作!','提示',MB_ICONINFORMATION);
      end;
    end;
      

  10.   

    用OSQL就行了,OSQL的帮助你可以去查查联机丛书
      

  11.   

    非常感谢(larruping) 的指导!