您的位置:首页 > 数据库

数据库的备份与还原(vb.net代码篇)

2016-05-01 21:28 429 查看
        在数据库中我们既可以手动的进行备份与还原,也可通过sql语句进行备份与还原。也可以根据需求设置成自动在规定的时间内进行自动备份。但是对于一般的系统用户来说直接进入比较陌生的数据库来进行设置则显得不是很友好,所以通过代码来实现只需利用控件进行简单的操作则显得很重要

数据库备份

       说明:可以将数据库备份到指定的位置,如不指定则默认到数据库的安装文件夹内,为了还原方便在命名是加上了时间。

<strong><span style="font-size:18px;"> Dim cn As SqlConnection '定义一个链接对象
Dim cm As SqlCommand '定义一个命令对象
Dim all1 As String '用来存放需要备份的数据库的备份时的名字
all1 = "d:\HumanResourcesSystem" & Format(Now, "yy-MM-dd") '指定备份的路径和名字,在这里加了一个时间
cn = New SqlConnection("Data Source=.;Initial Catalog=HumanResourcesSystem;User ID=sa;Password=123456") '给对象赋值
cm = New SqlCommand("BACKUP DATABASE HumanResourcesSystem TO DISK='" & all1 & "' WITH Format", cn) '通过使用WITH FORMAT可以做到覆盖任何现有的备份和创建一个新的媒体集
cn.Open() '打开数据库
cm.ExecuteNonQuery()
MsgBox("备份成功,请到D盘查找")
cn.Close()</span></strong>

数据库的还原

        说明:进行还原时由用户自行选择要还原的数据库

<strong><span style="font-size:18px;"> Dim cn As New SqlConnection '定义一个链接对象
Dim cn1 As New SqlConnection '在定义一个链接对象
Dim mydr As SqlDataReader '定义一个读取数据的对象</span></strong>
<strong><span style="font-size:18px;">        Dim str As String                  '定义一个字符用来盛放数据库进程
Dim tmpConnectionString As String = "Data Source= LJM;Initial Catalog=master;Integrated Security=True"   '将链接语句赋值给tmpconnectionstring
Dim all As String
Me.OpenFileDialog1.Filter = "所有文件(*.*)|*.*|备份文件(*.bak)|*.bak"   '打开选择框进行选择
Me.OpenFileDialog1.ShowDialog()
all = OpenFileDialog1.FileName    '获得文件名
If all = Nothing Then
MessageBox.Show("文件名不能为空", "系统提示")
Exit Sub
End If
cn.ConnectionString = tmpConnectionString
cn1.ConnectionString = tmpConnectionString
cn.Open()
cn1.Open()
Dim cm As SqlCommand = New SqlCommand("select spid from master..sysprocesses where dbid=db_id('HumanResourcesSystem')", cn)  '选择所有进程
mydr = cm.ExecuteReader()
Dim cm1 As SqlCommand = New SqlCommand()
cm1.Connection = cn1
While (mydr.Read())   '杀死进程
str = mydr("spid").ToString()
cm1.CommandText = str
cm1.CommandType = CommandType.Text
Application.DoEvents()
cm1.ExecuteNonQuery()

End While
mydr.Close()
cm = New SqlCommand("RESTORE DATABASE HumanResourcesSystem FROM DISK='" & all & "'WITH REPLACE", cn)
cm.ExecuteNonQuery()
MsgBox("恢复自" & all & ",软件自动关闭,请重新启动")
cn.Close()
cn1.Close()
Me.Close()</span></strong>


总结:这两个功能还有很多可以完善之处,但功能已经能实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息