PDA

View Full Version : بکاپ از sql express



saadi2
چهارشنبه 24 تیر 1388, 21:16 عصر
سلام
در برنامه ای نه اینجا گذاشتم تو فرم لود یک دیتابیس میسازه و تو چوشه data قرار میده
با زدن دکمه back up یک بکاپ از بانک میگیره و تو درایو D:\ قرار میده
مشکل اینجاست که بعضی وقتها این خطا رو میده:

Unable to open the physical file "D:\Projects\backup\bim\Debug\data\data5_data".Operating system error 2: "2(error not found)".
Could not attach file 'D:\Projects\backup\bim\Debug\data\data5_data' as database 'data5_data'.


و وقتی بخایم دوباره بکاپ بگیریم میگه که این بانک قبلا attach شده و اجازه نمیده
اگه ممکنه این کدو برام اصلاح کنید. یا یه راه بهتر برای بکاپ گیری نشون بدید به من
ممنون

rooshan2008
جمعه 26 تیر 1388, 02:35 صبح
با سلام
در ضمن مشکل شما در قسمت ماژول در رشته ارتباطی بود
اول یه فرم باز کنید روش یک دکمه بزارید بعد این کدها رو توش بریزید.

تعاریف



Const conString As String = "Server=.\sqlexpress;" & _
"Integrated Security=SSPI;" & _
"uid=sa;pwd=;database=Master"

Dim Con2 As New SqlConnection()
Dim sql As String

Dim Com As New SqlCommand
Dim At As New SqlDataAdapter


اتصال به بانک



Public Sub Connect()
Con2.ConnectionString = (conString)
If Con2.State = ConnectionState.Closed Then Con2.Open()
End Sub


اجرای دستور اس کیو ال و برگشت دادن مقدار



Public Function Execute(ByVal sql As String) As DataTable
Try

Dim Tb As New DataTable
With Com
.CommandText = sql
.Connection = Con2
End With

At.SelectCommand = Com
At.Fill(Tb)
Return Tb
Catch ex As Exception
Return Nothing

End Try

End Function


این تابع برسی می کنید که بانک موزد نظر موجود می باشد یا خیر



Public Function ExistDatabase(ByVal Databasename As String) As Boolean

Try

Dim strSQL = "sp_helpDb " & Databasename
Dim tb1 As DataTable = Execute(strSQL)
If tb1.Rows.Count Then

Return True

Else

Return False

End If

Catch ex As Exception
If Err.Number Then

Return False

End If

End Try

End Function


تابع ایجاد دیتابیس



Private Function CreateDatabase(ByVal Path As String, ByVal name As String) As Boolean

Dim strSQL As String = Nothing

If Not ExistDatabase(name) Then

Try

strSQL = "CREATE DATABASE [" & name & "] ON PRIMARY " + _
"( NAME = N'" + name + "', FILENAME = N'" + Path + name + "_data.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )"

Execute(strSQL)
Catch ex As Exception
MsgBox(ex.Message)
End Try

End If

End Function



تابع ایجاد پشتیبان



Public Sub CreateBackup(ByVal Database As String, ByVal Path As String)
Try

SQL = "BACKUP DATABASE " + Database + " TO DISK = '" + Path + "' WITH NOFORMAT"

Execute(sql)
Execute("Use Data1")
MessageBox.Show("OK ..." + vbCrLf + " Name = " + Database + vbCrLf + " Path =" + Path)
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub



این کد را درForm_load قرار دهید



Connect()
CreateDatabase("c:\backup\", "data1")



این کد رو هم در رویداد کلیک Button قرار بدین



Dim SF As New SaveFileDialog
SF.ShowDialog()
If Len(SF.FileName) > 0 Then

CreateBackup("data1", SF.FileName)
End If


در ضمن دوستان ببخشید از اینکه من کدها رو یکم بهم ریخته نوشتم