我添加了一个安装类,下面是恢复数据库的方法,我是在网上找的方法,但对 exec p_RestoreDb 恢复是怎么回事,不太明月,是不是还要写一个这样的存储过程,这个存储过程又应该放在哪,如果我这个在一台没有安装SQL的机器上是不是就无法安装了???请各们大哥指教........  Try            Dim connStr As String = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", Me.Context.Parameters.Item("server"), Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"))            '根据输入的数据库名称建立数据库            ExecuteSql(connStr, "master", "CREATE DATABASE " + Me.Context.Parameters.Item("dbname"))            '向sql脚本语言写入            Dim fs As FileStream            Dim bw As StreamWriter            Dim strTemp As String            fs = New FileStream(Me.Context.Parameters.Item("TARGETDIR") & "\webdb.sql", FileMode.Append)            Dim enc As System.Text.Encoding            enc = System.Text.Encoding.Unicode            bw = New StreamWriter(fs, enc)            'bw.BaseStream.Seek(0, SeekOrigin.End)            bw.WriteLine("exec p_RestoreDb '" & Me.Context.Parameters.Item("TARGETDIR") & "webdb_db.bak','" & Me.Context.Parameters.Item("dbname") & "',@a")
           
            bw.Close()                        '调用osql执行脚本            Dim writeTableProcess As New System.Diagnostics.Process            writeTableProcess.StartInfo.FileName = "osql.exe "            writeTableProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d master -i {2}hdweb.sql", Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"), Me.Context.Parameters.Item("targetdir"))            '可以执行的数据操作,可以根据用户输入的操作;
            
            writeTableProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden            writeTableProcess.Start()            writeTableProcess.WaitForExit()  '等待执行            writeTableProcess.Close()            writeTableProcess.Dispose()
        Catch ex As Exception            Throw ex

解决方案 »

  1.   

    存储过程放在一个txt文件里,然后读出这个txt,用command执行这个txt的内容就建立了存储过程或表
      

  2.   

    exec p_RestoreDb 不用管它.
    就如同在代码中使用
    select * from myTable下面是一个恢复数据库的方法,正在用.string SqlStr2 = "use master restore database " + ETong.ETongConn().Database + " from disk='" + this.lblBackUp.Text + "'";
                SqlConnection con = ETong.ETongConn();
                con.Open();
                try
                {
                    SqlCommand com = new SqlCommand(SqlStr2, con);
                    com.ExecuteNonQuery();
                    string m = "还原成功!";
                    ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "alert('" + m + "');", true);
                }
                catch (Exception error)
                {
                    string m = "数据库忙,还原失败,稍后再试!";
                    m += "\n" + error.ToString();
                    ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "alert('" + m + "');", true);
                }
                finally
                {
                    con.Close();
                }