您的位置:首页 > 数据库

如何通过Web方式把服务器端的数据库备份到本地的电脑硬盘中?

2007-03-08 16:32 417 查看
问题描述:
    如何通过Web方式把服务器端的数据库备份到本地的电脑硬盘中?

解决思路:


1.       首先必须保证Web站点和数据库部署在同一台服务器上。

数据库备份时只能备份到本地硬盘上,如果数据库和Web服务器不在同一台服务器上,那么通过Web站点下载数据库服务器上的数据库备份比较麻烦,我们后面再介绍如何解决不在同一台服务器上的情况。

2.       通过SQLDMO将数据库备份到服务器上的指定位置。

我们可以通过SQLDMO来实现数据库的备份,那么要访问SQLDMO,我们必须通过添加对SQLDMO COM组件的引用,通过添加References,弹出对话框中,选择COM选项卡,然后找到组件:Microsoft SQLDMO Object Library,点击确定,把组件添加到我们的Web Site中,然后通过以下代码可以对数据库进行备份
其中,strFileName是数据库备份保存的位置(服务器上的位置),为了下载的实现简单一点,我们通过将strFileName设置为Web项目的虚拟目录下,我们可以设置为根目录下, 那么strFileName = Server.MapPath(“/Db.bak”);
[align=left]  [/align]
 1

public bool BackUPDB(string ServerName, string UserName, string Password, string strDbName, string strFileName)
 2





{
 3


 4

            SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
 5


 6

            try
 7


 8



            

{
 9


10

                svr.Connect(ServerName, UserName, Password);
11


12

                SQLDMO.Backup bak = new SQLDMO.BackupClass();
13


14

                bak.Action = 0;
15


16

                bak.Initialize = true;
17


18

                bak.Files = strFileName;
19


20

                bak.Database = strDbName;
21


22

                bak.SQLBackup(svr); 
23


24

                return true;
25


26

            }
27


28

            catch (Exception err)
29


30



            

{
31


32

                throw new Exception("备份数据库失败:" + err.Message);
33


34

            }
35


36

            finally
37


38



            

{
39


40

                svr.DisConnect();
41


42

            }
43


44

}
45


[align=left][/align]

3.       下载数据库备份

根据2.中的数据库备份文件,我们知道待下载的备份文件为:file= Server.MapPath(“/Db.bak”);这样我们就可以通过调用Download(file)下载数据库备份。
[align=left]  [/align]
 1

public void Download(string file)
 2


 3



        

{
 4


 5

            FileInfo fi = new FileInfo(file);
 6


 7

            Response.AddHeader("Content-Length", fi.Length.ToString());
 8


 9

            Response.ContentType = "application/octet-stream";
10


11

            Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", HttpUtility.UrlEncode(file, Encoding.UTF8)));
12


13

 
14


15

            Response.WriteFile(file);
16


17

        }
18


[align=left][/align]
注意:为了能够让用户可以下载备份,我们必须将数据库备份到Web项目的IIS目录下

4.       解决办法存在的不足和改进。

通过以上两个步骤就是实现通过Web方式备份数据库并保存到本地硬盘,但是前提是Web和数据库必须部署在同一台服务器上。
那么,
8ed9
如果Web站点和数据库部署在不同机器上如何解决呢?其实也类是,只要保证我们数据库的备份文件保存位置对Web项目来说是透明的,而且通过Web可以访问得到就可以了。
比如,我们可以通过在数据库服务器上建立一个虚拟目录,指向数据库备份的位置,然后Web中就可以根据虚拟目录访问到备份文件。或者也可以建立一个ftp目录指向数据库备份位置,Web中通过ftp协议来下载备份文件。当然也可以通过Remoting Service来实现。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐