我是用vs2005和sql2005做的cs程序,现在需要打包,将数据库和sql服务打包进去,各位高手指点一下

解决方案 »

  1.   


    安装部署中附加数据库或执行SQL创建数据
    use master exec sp_attach_db @dbname=N'数据库名 ',@filename1=N'数据库文件地址',@filename2=N'日志文件地址'
    installshield安装脚本 
     安装部署中install添加自定义操作
    设置文本框属性值
    如Context.Parameters["targetdir"]  
    private void ExecuteSql(string connString,string DatabaseName,string sql)
    {
    using(SqlConnection conn=new SqlConnection(connString))
    {
    SqlCommand cmd=new SqlCommand(sql,conn);
    conn.Open();
    cmd.Connection.ChangeDatabase(DatabaseName);
    cmd.ExecuteNonQuery();
    conn.Close();
    }
    }
    string connString=string.Format("server={0};user id={1};password={2}",this.Context.Parameters["server"],this.Context.Parameters["user"],this.Context.Parameters["pwd"]);//根据输入的数据库名称建立数据库
    ExecuteSql(connString,"master","create database "+this.Context.Parameters["dbname"]);//调用osql执行脚本
    string cmd=string.Format(" -S{0} -U{1} -P{2} -d{3} -i{4}db.sql",this.Context.Parameters["server"],this.Context.Parameters["user"],this.Context.Parameters["pwd"],this.Context.Parameters["dbname"],this.Context.Parameters["targetdir"]);
    System.Diagnostics.Process sqlProcess=new Process();
    sqlProcess.StartInfo.FileName="osql.exe";
    sqlProcess.StartInfo.Arguments=cmd;
    sqlProcess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
    sqlProcess.Start();
    sqlProcess.WaitForExit();//等待执行
    sqlProcess.Close();
    Installshield实现web部署和数据库安装
      

  2.   

    能检测到安装sql吗?客户让那种傻瓜式安装,监测本地没有安装sql的话就安装
      

  3.   

    就是install安装类执行sql语句
      

  4.   

    数据库文件地址指的是数据库什么文件?日志文件地址是在sql的安装目录吗?
    sql的安装脚本怎么写呀 
      

  5.   

    可以研究哈 Installshield 
      

  6.   

    可以用InstallShield进行打包,功能很强大