项目总结[4]--数据备份篇

类别:.NET开发 点击:0 评论:0 推荐:

刚使用VB.Net开发项目,在使用vb.net的过程中走了很多弯路.
希望自己的经验能给各位带来一些帮助.
[如果各位需要代码的话,可以留下Email,大家互相交流经验]

项目总结[4]--数据库备份篇
   本节只考虑使用SqlServer做备份例子
一般来说,如果使用SqlServer做数据备份,很多人都提出这样问题??
  SqlServer一般来说数据备份只能备份在服务器机器里,Client端如何把该数据库保留在本地呢?
本文目的是如何解答该问题.
   理论方法如下
一.备份方式一[Internet或者局域网]
1.在服务器中使用SqlServer做好备份文件
2.把该备份文件放到IIS目录下[必须保证服务器有Web方式访问]
3.使用Explorer把文件直接DownLoad在Client
  或者使用文件流方式把文件读到本地机器

二.备份方式二
1.在服务器中使用SqlServer做好备份文件
2.使用文件流方式把文件读到本地机器[局域网]
  或者使用WebServer方式把文件读到本地机器[Internet或者局域网]

三.备份方式三[Internet或者局域网]
1.可以直接使用SqlServer任务功能把备份方式一备份方式二的步骤1.2同时做完
2.可以直接套用前面两个方法来做

四.备份方式四[Internet或者局域网]
1.使用上面三种方式的步骤一二来完成
2.把备份文件读进SqlServer中的其中一个表
3.通过SqlServer来读出数据,写文件到Client

以上四种方案,我都做了大概的流程分析,以上方法都可行

Example,由于时间紧,我没有把四种方式代码都编写好[各位可以自己测试]
我只对第一种方式做了详细解释
       'windBackUp是自己定义的一个类,只用存储过程来备份一个数据
       Dim myBackUp As winBackUp.BackUp = New winBackUp.BackUp("myDataBase", "sa", "sa")
       '执行备份功能
        Dim result As Boolean = myBackUp.BackUpDataBase("myDataBase", "c:\\myDataBase.dat")
       '如果备份成功,那么进行下面操作
        If result = True Then
            'IISManager是其中一个类,目的是求出IIS服务的物理路径
            Dim myIIs As IISManager = New IISManager()
            myIIs.Connect()
            '直接调用Shell方法,来进行文件Copy
            Dim strbackup As String = "xCopy  C:\\myDataBase.dat " + myIIs.IISPath + "\myDataBase.dat/-Y"
            Dim i As Integer = Shell(strbackup, AppWinStyle.MinimizedNoFocus, True)
            '如何下载这里没有详细说明,相信各位都应该清楚如何使用
            'http://servername/myDataBase.dat
        End If
 '附windBackUp IISManager类主要函数供参考
    Public Class IISManager
  Protected rootfolder As System.DirectoryServices.DirectoryEntry
 Public Sub New()
            '默认情况下使用localhost,即访问本地机
            _server = "localhost"
            _website = "1"
            _batchflag = False
        End Sub 'New
  Public Overloads Sub Connect()
            ConnectToServer()
        End Sub 'Connect
 '/<summary>
        '/私有方法
        '/</summary>
        '连接服务器
        Private Sub ConnectToServer()
            Dim strPath As String = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT"
            Try
                Me.rootfolder = New DirectoryEntry(strPath)
                _virdirs = GetVirDirs(Me.rootfolder.Children)
            Catch e As Exception
                Throw New Exception("Can't connect to the server [" + _server + "] ...", e)
            End Try
        End Sub 'ConnectToServer
   '/ <summary>
        '/ 取得服务器所在的物理路径
        '/ </summary>
        '/ <returns>IIS的物理路径</returns>
        Public Function IISPath() As String
            Return rootfolder.Properties("path").Value.ToString()
        End Function 'IISPath

'该类使用C#写的...
namespace winBackUp
/// <summary>
  /// 初试化
  /// </summary>
  /// <param name="databasename">数据库名</param>
  /// <param name="databaseuser">数据库用户名</param>
  /// <param name="databasepass">数据库密码</param>
  public BackUp(string databasename,string databaseuser,string databasepass)
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
   string sql="data source=localhost;initial catalog="+databasename+";password="+databasepass+";persist security info=True;user id="+databaseuser+";workstation id=TOPS03496;packet size=4096";
   //注意默认数据库不要和恢复的数据库同名
   init(sql);
  }

  /// <summary>
  /// 备份数据库
  /// </summary>
  /// <param name="databasename">要备份的数据源名称</param>
  /// <param name="backuptodatabase">备份到的数据库文件名称及路径</param>
  /// <returns></returns>
  public bool BackUpDataBase(string databasename,string backuptodatabase)
  {
                     .......
   //备份数据库到指定的数据库文件(完全备份)
   sql="BACKUP DATABASE "+databasename +" TO "+databasename +" WITH INIT";
   SqlCommand sqlcmd3=new SqlCommand(sql,conn);
   sqlcmd3.CommandType =CommandType.Text;
   try
   {
    sqlcmd3.ExecuteNonQuery();
   }
   catch(Exception err)
   {
    string str=err.Message ;
    conn.Close();

    return false;
   }
   .....
}

项目总结--启动窗体篇
http://expert.csdn.net/Expert/TopicView1.asp?id=2513452
项目总结[2]--菜单篇
http://expert.csdn.net/Expert/TopicView1.asp?id=2557044
项目总结[3]--浅谈窗体间传值,并提供实例
http://expert.csdn.net/Expert/TopicView1.asp?id=2523412

本文地址:http://com.8s8s.com/it/it45204.htm