做了一个程序,用c#部署做的,用到了sql数据库,但是安装程序后还得手动把数据库附加进去,我想问怎样才能在安装程序时它自动把数据库附加进去啊?????????????????得写数据库脚本语言吗??请各位高手指点。

解决方案 »

  1.   

    如果既有mdf文件,又有LOG文件,则用存储过程 
        EXEC sp_attach_db @dbname = N'xx', 
         @filename1 = N'c:\mssql7\data\xx.mdf', 
         @filename2 = N'c:\mssql7\data\xx_log.ldf' 
        如果只有一个mdf文件则: 
        EXEC sp_detach_db @dbname = 'xx' 
        EXEC sp_attach_single_file_db @dbname = 'xx', 
         @physname = 'c:\mssql7\data\xx.mdf' 
      

  2.   

    /// <summary>
    /// 附加数据库
    /// </summary>
    /// <param name="strCon">连接字符串</param>
    /// <param name="DBName">要生成的数据库名</param>
    /// <param name="strMdf">mdf文件位置</param>
    /// <param name="strLdf">ldf文件位置</param>
    /// <returns></returns>
    public bool attachDB(string strCon,string DBName,string strMdf,string strLdf)
    {
    bool bl=true;
    try
    {
    cnn.ConnectionString=strCon;
    if (cnn.State!=ConnectionState.Open)
    cnn.Open();

    cmd.Connection=cnn;
    cmd.CommandText=@"sp_attach_db";
    cmd.Parameters.Add(new OleDbParameter("@dbname",OleDbType.VarChar));
    cmd.Parameters["@dbname"].Value=DBName;
    cmd.Parameters.Add(new OleDbParameter("@filename1",OleDbType.VarChar));
    cmd.Parameters["@filename1"].Value=strMdf;
    cmd.Parameters.Add(new OleDbParameter("@filename2",OleDbType.VarChar));
    cmd.Parameters["@filename2"].Value=strLdf; cmd.CommandType=CommandType.StoredProcedure;
    cmd.ExecuteNonQuery();
    }
    catch
    {
    bl=false;
    }
    finally
    {
    cnn.Close();
    }
    return bl; }
      

  3.   

    把数据库用backup database备份下来。
    安装后执行restore database。
      

  4.   

    长见识了,呵呵,多谢 LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)
      

  5.   

    自定义 MSI 安装
    http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/usvs04j7.mspx
      

  6.   

    http://blog.csdn.net/lihonggen0/archive/2004/05/17/13654.aspx呵呵!