随笔-15  评论-112  文章-4  trackbacks-0
其实现在软件或web应用程序好多都要sql server, 本来对程序员用企业管理器就可以附加进去;
这个附加器打开web页而就可以进行附加,只要把该页嵌入到站点下,就可以实现与企业管理器相同的功能!
该附加器主要针对mdf和日志文件进行附加;
只需选择mdf日志文件程序自动查找!

完整代码
 源代码下载

 11using System;
 2 2using System.Data;
 3 3using System.Configuration;
 4 4using System.Web;
 5 5using System.Web.Security;
 6 6using System.Web.UI;
 7 7using System.Web.UI.WebControls;
 8 8using System.Web.UI.WebControls.WebParts;
 9 9using System.Web.UI.HtmlControls;
1010using System.Data.SqlClient;
1111using System.IO;
1212public partial class _Default : System.Web.UI.Page 
1313{
1414    public string sqlServer;
1515    public string uid;
1616    public string pwd;
1717    public string sqlstr;
1818    protected void Page_Load(object sender, EventArgs e)
1919    {
2020      
2121    }

2222    protected void btnStup_Click(object sender, EventArgs e)
2323    {
2424        string fileExtend = Path.GetExtension(File_MDF.PostedFile.FileName);//获取扩展名
2525        string file_Name = Path.GetFileName(File_MDF.PostedFile.FileName); //获取文件名
2626       
2727        if (fileExtend.ToUpper().CompareTo(".MDF"== 0)
2828        {
2929           // Response.Write(fileExtend.ToString()+"<br>名:"+file_Name.ToString()+"<br>"+File_MDF.Value);         
3030            string fileName=file_Name.Substring(0,file_Name.LastIndexOf("_",file_Name.Length));//得到正确名称
3131            string logname = File_MDF.Value.Substring(0, File_MDF.Value.LastIndexOf("_",File_MDF.Value.Length)) + "_Log.LDF";
3232            string logname1 = File_MDF.Value.Substring(0, File_MDF.Value.LastIndexOf("_",File_MDF.Value.Length)) + "_log.ldf";
3333            if (File.Exists(logname)||File.Exists(logname1))
3434            {
3535                if (rdosql.Checked)
3636                {
3737                    sqlServer = "server=" + txtServer.Text + ";User id=" + txtuid.Text + ";Pwd=" + txtpwd.Text + "";
3838                }

3939                else
4040                {
4141                    sqlServer = "server=" + txtServer.Text + ";uid="+uid+"";
4242                }

4343                SqlConnection sqlCon = new SqlConnection(sqlServer);
4444                sqlCon.Open();
4545                try
4646                {
4747                    string str = "EXEC sp_attach_db @dbname=N'" + fileName + "',@filename1=N'" + File_MDF.Value + "',@filename2=N'" + logname + "'";
4848                    SqlCommand cmd = new SqlCommand(str, sqlCon);
4949                    cmd.ExecuteNonQuery();
5050                }

5151                catch (SqlException exc)
5252                {
5353                    if (chkAppend.Checked)
5454                    {
5555                        SqlCommand cmd1 = new SqlCommand("EXEC sp_detach_db @dbname='" + fileName + "';" + "EXEC sp_attach_single_file_db @dbname='" + fileName + "',@physname='" + File_MDF.Value + "'", sqlCon);
5656                        cmd1.ExecuteNonQuery();
5757                        Response.Write("<script>alert('数据附加成功!');</script>");
5858                    }

5959                    else
6060                    {
6161                        Response.Write("<script>alert('数据库未能安装成功  提示:将原有的数据库分离');</script>");
6262                    }

6363                }

6464                finally
6565                {
6666                    if (sqlCon.State == ConnectionState.Open)
6767                        sqlCon.Close(); 
6868                    //搞定,收工!
6969                }

7070                
7171            }

7272            else
7373            {
7474                Response.Write("<script>alert('警告,找不到相应的日志文件!');</script>");
7575            }

7676        }

7777        else
7878        {
7979            Response.Write("<script>alert('选择文件有误!');</script>");
8080        }

8181    }

8282    protected void rdosql_CheckedChanged(object sender, EventArgs e)
8383    {
8484        uid = txtuid.Text;
8585        pwd = txtpwd.Text;
8686    }

8787    protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
8888    {
8989        uid = "integrated security=true;";
9090    }

9191}

9292
不应该发布在首页,有不对的,请各位高手指点!
posted on 2007-11-27 08:53 .NET的春天 阅读(1808) 评论(14)  编辑 收藏 网摘 所属分类: .NET技术

评论:
#1楼  2007-11-27 09:04 | 没剑      
一般的虚拟空间里会有“EXEC sp_attach_single_file_db ”
执行的权限吗?
  回复  引用  查看    
#2楼  2007-11-27 09:10 | xuqiang      
已经收藏,多谢

  回复  引用  查看    
#3楼  2007-11-27 09:15 | 壁虎      
呵呵~没有实用性。并且正如你自己说的:不应该发布在首页。
这个从你用的技术上来说是很基础。
撇开执行sp_attach_single_file_db的权限问题不谈,
用拼凑的形式去执行存储过程,就不是个好方法。
  回复  引用  查看    
#4楼  2007-11-27 09:59 | superstar      
不是很实用吧,是是拿来玩玩的
  回复  引用  查看    
#5楼  2007-11-27 10:44 | 米开朗基罗      
@superstar
还好吧。
做了一个基于存储过程的web 界面。
  回复  引用  查看    
#6楼  2007-11-27 10:57 | Leepy      
这个不实用么?我觉得还行
  回复  引用  查看    
#7楼  2007-11-27 11:13 | Yoshow      
有空我也玩玩..
  回复  引用  查看    
#8楼  2007-11-27 11:15 | Richet      
谢谢了,学习一下
  回复  引用  查看    
#9楼  2007-11-27 12:47 | 神奇小子      
用SqlDmo就可以做了
不用那么麻烦
  回复  引用  查看    
#10楼  2007-11-27 13:26 | Clark Zheng      
不行
  回复  引用  查看    
#11楼  2007-11-27 16:23 | Enzo      
撇开权限,
我觉得安全性没保证
  回复  引用  查看    
#12楼  2007-11-28 04:53 | JesseZhao      
呵呵,这个问题就是权限的问题,要是自己的服务器的话,还是比较爽的...
  回复  引用  查看    
#13楼  2007-12-03 06:27 | 数据绑定者      
不错啊
  回复  引用  查看    
#14楼 [楼主] 2007-12-03 15:23 | .NET的春天      
@没剑
这个我说不好,,只是我用了一个虚拟空间已经试过了,大部应该还是可以;
@ xuqiang
谢谢,我也是新手,互相学习!
@ 壁虎
你说的有道理,我是放错地方了,以后不会在乱放了,
以后有什么技术上问题,请多多指点啊!
@superstar
我是个新手,想的话,应该好行吧
@米开朗基罗
多谢鼓励,
@Leepy
谢谢你的支持
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索
[推荐职位]上海盛大网络招聘架构师



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: