刚使用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]--浅谈窗体间传值,并提供实例