نقل قول نوشته شده توسط saadi2 مشاهده تاپیک
بفرمایید
لطف کنید کانکشن استرینگ sql server را برای اون دوست عزیز قرار بدید


Imports
System.Data
Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
PublicClass FrmBackUp
PublicConst conString AsString = "Server=.\sqlexpress;" & _
"Integrated Security=SSPI;" & _
"uid=sa;pwd=;database=master"
PublicSub BackupDatabase(ByVal ConnectionStr, ByVal DevicePath, ByVal FileName, ByVal Database)
Using Con AsNew SqlConnection(ConnectionStr)
If Con.State = ConnectionState.Closed Then Con.Open()
Dim Srvcon AsNew ServerConnection(Con)
Dim Srv AsNew Server(Srvcon)
Dim bdi AsNew BackupDeviceItem(FileName, DeviceType.File)
Dim Backup AsNew Backup
Try
With Backup
.Devices.Add(bdi)
.Action = BackupActionType.Database
.BackupSetDescription = "Backup DataBase"
.BackupSetName = "DB"
.Database = Database
.LogTruncation = BackupTruncateLogType.Truncate
.SqlBackup(Srv)
EndWith
MsgBox("ok")
Catch ex As Exception
MsgBox(ex.Message)
EndTry
EndUsing
EndSub
PublicSub RestoreDataBase(ByVal ConnectionStr, ByVal FileName, ByVal Database)
Using Con AsNew SqlConnection(ConnectionStr)
If Con.State = ConnectionState.Closed Then Con.Open()
Dim Srvcon AsNew ServerConnection(Con)
Dim Srv AsNew Server(Srvcon)
Dim deviceItem = New BackupDeviceItem(FileName, DeviceType.File)
Dim Restore AsNew Restore
With Restore
.Devices.Add(deviceItem)
.Action = RestoreActionType.Database
.Database = Database
.SqlRestore(Srv)
EndWith
EndUsing
EndSub
سلام
من قبلا از کدی مشابه همین در بکاپ گیری استفاده می کردم و مشکلی هم نداشتم و حتی الان هم همون برنامه ها به خوبی کار می کنن و در گرفتن بکاپ مشکلی ندارند.
نمی دونم چرا الان نمی تونم. شاید نکاتی رو فراموش کردم. من smo رو به رفرنس اضافه می کنم آیا باید چیز دیگری رو هم اضافه کرد؟
کد من هم به این شکل هست.

Dim DevicePath As String
With SaveFileDialog1
.FileName = str_name_backup
.DefaultExt = "bak"
.Filter = "DateBase Backup File(*.bak)|*.bak"
.OverwritePrompt = True
End With
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
DevicePath = SaveFileDialog1.FileName
If My.Computer.FileSystem.FileExists(DevicePath) Then
Kill(DevicePath)
End If
If con.State = ConnectionState.Closed Then con.Open()
Dim Srvcon As New ServerConnection(con)
Dim Srv As New Server(Srvcon)
' Create backup device item for the backup
Dim bdi As New BackupDeviceItem(DevicePath, DeviceType.File)
' Create the backup informaton
Dim Backup As New Backup
Backup.Devices.Add(bdi)
With Backup
'Type Of Backup
.Action = BackupActionType.Database
.BackupSetDescription = "Backup DataBase"
.BackupSetName = "DB"
.Database = con.Database.ToString()
.LogTruncation = BackupTruncateLogType.Truncate
'Backup.ExpirationDate = New DateTime(2007, 5, 1)
' Run the backup
.SqlBackup(Srv)
End With
در ضمن به نظرم برای بکاپ گیری نباید مسیر فایل دیتابیس مشخص کرد حتی اگه مسیر exe برنامه باشه هر چند راحتر به نظر می رسه.