读书人

请教在VB.NET中怎样备份数据库?

发布时间: 2012-02-01 16:58:19 作者: rapoo

请问在VB.NET中怎样备份数据库??
我正在做一个酒店管理系统,要加入一个对整个数据库的备份和还原功能。。。请问有谁知道怎样实现???谢谢指教啊!!!!

[解决办法]
我想应该可以用sql语句实现以下供参考http://blog.csdn.net/rainbowsoftware/archive/2007/04/13/1563371.aspx
[解决办法]
BACKUP DATABASE [数据库名] TO DISK= '数据库名及路径 '
[解决办法]
还原的时候先要中止所有的数据库连接后才能还原.可以用存储过程来完成这个工作.
给你贴个示例:
CREATE PROCEDURE testkill AS
declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql + ' kill '+cast(spid as varchar(8))
from master..sysprocesses
where dbid=db_id( 'Mold_MS ')
GO
以上为我保存的存储过程
然后在asp页中执行
set rs=server.createobject( "adodb.recordset ")
sqlstr= "execute testkill 'Mold_MS ' "
sql= "Restore database Mold_MS from DISK= ' "& dbpath & "\ " & dbname & " ' "
rs.open sqlstr,conn,1
conn.Execute(sqlstr)
Set rs=conn.Execute(sql)
上面是在ASP网页中调用的代码,你在你的程序里调用这个存储过程就行.
[解决办法]
Public ReadOnly Property Backup() As Boolean
Get
Me.tmp_Command.CommandText = "Backup database " & Me._Name & " to disk= ' " & Me._Path & " ' with name= ' " & Me._Name & " backup all ',description= 'Full Backup Of " & Me._Name & " ' "
Try
Me.tmp_Connection.Open()
Me.tmp_Command.ExecuteNonQuery()
Return True
Catch
Return False
Finally
If Me.tmp_Connection.State = ConnectionState.Open Then
Me.tmp_Connection.Close()
End If
End Try
End Get
End Property

Public Function Restock(ByRef tmpPB As ToolStripProgressBar) As Boolean
Dim tmp_I As Integer
Dim tmp_II As Integer
Dim tmp_Killer As String
Me.tmp_ExeStr = "Select spid From sysprocesses Where dbid = (Select dbid From sysdatabases Where name like ' " & Me._Control & " ') "
Try
Me.DoConnect()
Me.tmp_Flag = True
Me._DataSet.Clear()
Me.tmp_Connection.Open()
tmpPB.Value = 5
Me.tmp_Adapter = New SqlClient.SqlDataAdapter(Me.tmp_ExeStr, Me.tmp_Connection)
Me.tmp_Adapter.Fill(Me._DataSet, "SystemDB ")
tmpPB.Value = 10
tmp_II = Me._DataSet.Tables( "SystemDB ").Rows.Count
For tmp_I = 0 To tmp_II - 1
tmpPB.Value += tmp_II * Fix(85 / tmp_II)
tmp_Killer = "kill " + CType(Me._DataSet.Tables( "SystemDB ").Rows(tmp_I).Item(0), String)
Me.tmp_Command.CommandText = tmp_Killer
Me.tmp_Command.ExecuteNonQuery()
Next
Me.tmp_ExeStr = "Restore database " & Me._Control & " from disk= ' " & Me._Path & " ' with Recovery "
Me.tmp_Command.CommandText = Me.tmp_ExeStr
Me.tmp_Command.ExecuteNonQuery()
tmpPB.Value = 90

Me.tmp_ExeStr = "Alter database " & Me._Control & " set online "
Me.tmp_Command.CommandText = Me.tmp_ExeStr
Me.tmp_Command.ExecuteNonQuery()


tmpPB.Value = 100
Catch
Me.tmp_Flag = False
Finally
Me._Name = Me._Control
Me.DoConnect()
End Try
Return Me.tmp_Flag
End Function

读书人网 >VB Dotnet

热点推荐