PDA

View Full Version : پشتيبان گيري از SQL در VB.net



majid_vb_2008
جمعه 20 شهریور 1388, 15:53 عصر
سلام دوستان من ميخوام توي پروژم امكان پشتيبان گيري بزارم اگه كسي نمونه برنامه اي داره برام بزاره ممنون مي شم


ظما جستجو كردم چيزي كه بدردم بخوره پيدا نكردم

saadi2
جمعه 20 شهریور 1388, 20:34 عصر
یه dll برات نوشتم که با smo کار میکنه یه نمونه ام گذاشتم که راحت با یه دو سه خط تایپ راحت بکاپ میگیری

majid_vb_2008
جمعه 20 شهریور 1388, 21:03 عصر
ممنون دوست من ولي اي فقط نونه برنامه است
توي اين فايل زيپ Dll نداره حتي برنامه خودت هم ايراد مي گيره


Dim saadi As New Saadi__Smo_Dll.Saadi_Smo

Ali0Boy
جمعه 20 شهریور 1388, 21:45 عصر
ممنون دوست من ولي اي فقط نونه برنامه است
توي اين فايل زيپ Dll نداره حتي برنامه خودت هم ايراد مي گيره


Dim saadi As New Saadi__Smo_Dll.Saadi_Smo

آقا/خانوم saadi2 (http://barnamenevis.org/forum/member.php?u=89734) دوستمون درست می گن برنامه تون مشکل داره و نمی تونه فایل Dll رو پیدا کنه.
لطفا دوباره بررسی کنید و برای دانلود فایل رو ضمینه کنید.:تشویق:

saadi2
جمعه 20 شهریور 1388, 21:56 عصر
معذرت میخوام اینم dll تو debug کپیش کنید

Ali0Boy
جمعه 20 شهریور 1388, 22:00 عصر
شما یه بار برنامه رو ران کنید در پوشه debug باید ساخته بشه

دوست عزیز مشکل برنامه از debug کردن نیست مشکله برنامه در این خط می باشد:

Dim saadi As New Saadi__Smo_Dll.Saadi_Smo


و مشکل هم از این قسمت کده:

Saadi__Smo_Dll.Saadi_Smo

Ali0Boy
جمعه 20 شهریور 1388, 22:02 عصر
معذرت میخوام اینم dll تو debug کپیش کنید

ممنون دوست عزیز
حالا مشکل برطرف شد، موفق باشی

Scartage
شنبه 21 شهریور 1388, 09:04 صبح
یه dll برات نوشتم که با smo کار میکنه یه نمونه ام گذاشتم که راحت با یه دو سه خط تایپ راحت بکاپ میگیری

ممنون از کدی که گذاشتید. اینو اگه بخواییم برای SqlServer بنویسیم Connection String اش چطوری نوشته میشه ؟

majid_vb_2008
شنبه 21 شهریور 1388, 11:01 صبح
دوست من نتوانستم از كد استفاده كنم
اگه مشيه يكم توضيح بده

Navid Asadi
شنبه 21 شهریور 1388, 11:09 صبح
من هم نتونستم ازش استفاده کنم...حالا اون رو بی خیال
دوست عزیز به جای این که یک dll بدی و صورت مسئله رو پاک کنی بهتر نیست نحوه بک آپ گیری رو یاد بدی تا همه استفاده کنیم؟

saadi2
شنبه 21 شهریور 1388, 12:47 عصر
بفرمایید
لطف کنید کانکشن استرینگ 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
End Sub
Public Sub RestoreDataBase(ByVal ConnectionStr, ByVal FileName, ByVal Database)
Using Con As New SqlConnection(ConnectionStr)
If Con.State = ConnectionState.Closed Then Con.Open()
Dim Srvcon As New ServerConnection(Con)
Dim Srv As New Server(Srvcon)
Dim deviceItem = New BackupDeviceItem(FileName, DeviceType.File)
Dim Restore As New Restore
With Restore
.Devices.Add(deviceItem)
.Action = RestoreActionType.Database
.Database = Database
.SqlRestore(Srv)
End With
End Using
End Sub

saadi2
شنبه 21 شهریور 1388, 12:51 عصر
ProtectedConst conString AsString = _
"Server=localhost;" & _
"Integrated Security=SSPI;" & _
"DataBase=master"


دوستان برنامه رو من تو sql express تست کردم مشکلی نداشت
هر سوالی داشتید همینجا مطرح کنید.
درضمن همونطور که میدونید باید ریفرنس هایی رو به برنامتون اضافه کنید
Microsoft.SqlServer.Smo
Microsoft.SqlServer.ConnectionInfo

majid_vb_2008
شنبه 21 شهریور 1388, 13:33 عصر
دوست من
من با خود VS فايل بانك اطلاعاتي رو مي سازم و يك دونه فايل با فرمت MDF ذخيره مي شه از اونا چجور بكاپ بگيرم

saadi2
شنبه 21 شهریور 1388, 15:21 عصر
تو قسمت مربوط به دیتاست بانک اطلاعاتیت میتونی connection string رو ببینی .
ببین از express استفاده میکنه یا سرور .
بانک اطلاعاتیت کنار برنامته یا نه؟

majid_vb_2008
شنبه 21 شهریور 1388, 15:54 عصر
بانك اطلاعاتي كنار برنامه است

لطفا راهنمايي كنيد

alimanam
شنبه 21 شهریور 1388, 16:53 عصر
با سلام

دوست عزیزی که می خواد از بانک Access بکاپ بگیره بهترین روش اینه که با کپی پست ساده این کار رو بکنه !

یا علی

Scartage
شنبه 21 شهریور 1388, 21:28 عصر
ProtectedConst conString AsString = _
"Server=localhost;" & _
"Integrated Security=SSPI;" & _
"DataBase=master"
دوستان برنامه رو من تو sql express تست کردم مشکلی نداشت
هر سوالی داشتید همینجا مطرح کنید.
درضمن همونطور که میدونید باید ریفرنس هایی رو به برنامتون اضافه کنید
Microsoft.SqlServer.Smo
Microsoft.SqlServer.ConnectionInfo


دوست من نتوانستم از كد استفاده كنم
اگه مشيه يكم توضيح بده


من هم نتونستم ازش استفاده کنم...حالا اون رو بی خیال
دوست عزیز به جای این که یک dll بدی و صورت مسئله رو پاک کنی بهتر نیست نحوه بک آپ گیری رو یاد بدی تا همه استفاده کنیم؟


این DLL ای که گذاشتن رو کافیه که فقط در فولدر Bin/Debug کپی کنید و بعدش برنامه رو Run کنید.
برای من جواب میده و مشکلی نداره.

saadi2
شنبه 21 شهریور 1388, 22:44 عصر
بفرمایید دوست عزیز برای بکاپ گرفتن از دیتابیس هایی که هنگام اجرای برنامه attach میشوند من از این روش که در برنامه ی زیر گزاشتم استفاده میکنم . فقط کافیه در خط اول


PublicConst Data AsString = "Teachers"



نام دیتابیس خود را به جای "Teachers"
وارد کنید.

میبخشید که یکم دیر شد تا جواب بدم.

majid_vb_2008
یک شنبه 22 شهریور 1388, 10:26 صبح
دوست من ميشه بيشتر توضيح بدي

ظما كد براي ري استور كردن نگذاشتي

majid_vb_2008
یک شنبه 22 شهریور 1388, 14:56 عصر
دوست من ميشه بيشتر توضيح بدي

ظما كد براي ري استور كردن نگذاشتي


من هنوز منتظرم دوستان .................. :متفکر:

Hesamzadeh
یک شنبه 22 شهریور 1388, 19:08 عصر
دوست عزیز در مورد Backup و Restore بانکهای SDF هم بی زحمت یه مثال بزن
من خودم همیشه از کپی ساده استفاده میکنم ولی خوب زیاد جالب نیست

majid_vb_2008
یک شنبه 22 شهریور 1388, 22:22 عصر
دوستان به نظر شما ميشه با كپي كردن از فايل Mdf پشتيبان بگيريم


من هنوز منتظرم

majid_vb_2008
دوشنبه 23 شهریور 1388, 13:42 عصر
دوستان خبري نشد من منتظرم .................................................. .............


لطفا راهنمايي كنيد

majid_vb_2008
چهارشنبه 25 شهریور 1388, 11:49 صبح
دوستان به نظر شما ميشه با كپي كردن از فايل Mdf پشتيبان بگيريم



دوستان من هنوز منتظرم لطفا كمك كنيد


كارم خيلي گيره

ممنون مي شم ازتون

saadi2
چهارشنبه 25 شهریور 1388, 12:29 عصر
تا چند ساعت دیگه یه نمونه برای اینکه بتونی فایلتو rar بکنی در کنار برنامه برات قرار میدم

majid_vb_2008
چهارشنبه 25 شهریور 1388, 14:54 عصر
تا چند ساعت دیگه یه نمونه برای اینکه بتونی فایلتو rar بکنی در کنار برنامه برات قرار میدم

خيلي ممنون من منتظرم

با جستجو توي سايت يك كد پيدا كردم كه تونستم باهاش پشتيبان بگيرم حالا مي زارم اينجا شايد بدرد بقيه هم بخوره
اين براي پشتيبان گيري:


Dim Path As String = Application.StartupPath.ToString
con.Open()
strsql = "BACKUP DATABASE [" & Path & "\Data.mdf] TO DISK ='" & "C:\ddd.bak" & "' with format"
com = New SqlCommand(strsql, con)
com.ExecuteNonQuery()
con.Close()

اينم براي بازگرداني اطلاعات:


Dim Path As String = Application.StartupPath.ToString
con.Open()
strsql = "USE master; RESTORE DATABASE [" & Path & "\Data.mdf]" & " FROM DISK ='C:\ddd.bak'"
com = New SqlCommand(strsql, con)
com.ExecuteNonQuery()
con.Close()

saadi2
چهارشنبه 25 شهریور 1388, 15:12 عصر
با سلام دوست عزیز
امیدوارم مشکلت حل شده باشه ولی dll که من میزارم بانک اطلاعاتیتونو که تو پوشه دیباگه آرشیو میکنه وبا دکمه دوم میتونی extract ش کنی الان سریع نوشتم ناقصه ولی ببین اگه به کارت میاد کاملترش کنم
در ضمن connection string خودت که باهاش از کدهای بکاپی که گذاشتی استفاده کردی و قرار بده.

majid_vb_2008
چهارشنبه 25 شهریور 1388, 15:48 عصر
عزيزم ممنون مي شم كاملش كني

saadi2
جمعه 27 شهریور 1388, 20:33 عصر
خيلي ممنون من منتظرم

با جستجو توي سايت يك كد پيدا كردم كه تونستم باهاش پشتيبان بگيرم حالا مي زارم اينجا شايد بدرد بقيه هم بخوره
اين براي پشتيبان گيري:


Dim Path As String = Application.StartupPath.ToString
con.Open()
strsql = "BACKUP DATABASE [" & Path & "\Data.mdf] TO DISK ='" & "C:\ddd.bak" & "' with format"
com = New SqlCommand(strsql, con)
com.ExecuteNonQuery()
con.Close()

اينم براي بازگرداني اطلاعات:


Dim Path As String = Application.StartupPath.ToString
con.Open()
strsql = "USE master; RESTORE DATABASE [" & Path & "\Data.mdf]" & " FROM DISK ='C:\ddd.bak'"
com = New SqlCommand(strsql, con)
com.ExecuteNonQuery()
con.Close()


میشه connection string رو که باهاش با این کدها بکاپ گرفتی بزاری؟

majid_vb_2008
جمعه 27 شهریور 1388, 22:15 عصر
اينم connection string كه من باهاش به بانك اطلاعاتي وصل مي شم


"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Data.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

saadi2
جمعه 27 شهریور 1388, 23:04 عصر
مطمئنی با این کانکشن استرینگ میتونی بکاپ بگیری؟
میشه به پایگاه داده وصل شد و اطلاعات رو مشاهده و حذف و اضافه کرد ولی فقط در صورتی میشه بکاپ گرفت که گزینه ی
"initial catalog=data"
را به اون اضافه کنیم. برای من که اینجوریه
اگه این گزینه ام که اضافه کنیم با جابجایی مکان برنامه در هارد دیسک باز مشکل به وجود میاد

شما مشکلی ندارید؟

majid_vb_2008
جمعه 27 شهریور 1388, 23:37 عصر
مطمئنی با این کانکشن استرینگ میتونی بکاپ بگیری؟
میشه به پایگاه داده وصل شد و اطلاعات رو مشاهده و حذف و اضافه کرد ولی فقط در صورتی میشه بکاپ گرفت که گزینه ی
"initial catalog=data"
را به اون اضافه کنیم. برای من که اینجوریه
اگه این گزینه ام که اضافه کنیم با جابجایی مکان برنامه در هارد دیسک باز مشکل به وجود میاد

شما مشکلی ندارید؟



نه دوست من

من مطمئنم چون چند بار امتحان كردم ومشكلي به وجود نيامده حتي جاي پروژه رو هم عوض كردم بازم مشكلي پيش نيومد

saadi2
شنبه 28 شهریور 1388, 01:03 صبح
درسته بالاخره اشکال کارم و فهمیدم ممنون

sari-1369
جمعه 08 آبان 1388, 01:28 صبح
خيلي ممنون من منتظرم

با جستجو توي سايت يك كد پيدا كردم كه تونستم باهاش پشتيبان بگيرم حالا مي زارم اينجا شايد بدرد بقيه هم بخوره
اين براي پشتيبان گيري:


Dim Path As String = Application.StartupPath.ToString
con.Open()
strsql = "BACKUP DATABASE [" & Path & "\Data.mdf] TO DISK ='" & "C:\ddd.bak" & "' with format"
com = New SqlCommand(strsql, con)
com.ExecuteNonQuery()
con.Close()اينم براي بازگرداني اطلاعات:


Dim Path As String = Application.StartupPath.ToString
con.Open()
strsql = "USE master; RESTORE DATABASE [" & Path & "\Data.mdf]" & " FROM DISK ='C:\ddd.bak'"
com = New SqlCommand(strsql, con)
com.ExecuteNonQuery()
con.Close()

ممنون از کدهاتون ، خیلی کمکم کرد .

البته من اینطوری نوشتم .

Dim sql As String = "BACKUP DATABASE [" & My.Application.Info.DirectoryPath & "\Data\Nezam_DB.mdf" & "] TO DISK='" + txt_path.Text + "\FILE.bak' WITH FORMAT"
Using dbcon = New System.Data.SqlClient.SqlConnection(c.strcon)
Using dbcom = New System.Data.SqlClient.SqlCommand(sql, dbcon)
dbcon.Open()
dbcom.ExecuteNonQuery()
End Using
End Using



----------------------------------------------------------------


Dim sql As String = "USE master; RESTORE DATABASE [" & My.Application.Info.DirectoryPath & "\Data\Nezam_DB.mdf" & "]" & " FROM DISK ='" & txt_path.Text & "'"
Using dbcon = New System.Data.SqlClient.SqlConnection(c.strcon)
Using dbcom = New System.Data.SqlClient.SqlCommand(sql, dbcon)
dbcon.Open()
dbcom.ExecuteNonQuery()
End Using
End Using

uliya110
جمعه 08 آبان 1388, 11:58 صبح
از دوستان عزیز مخصوصا saadi2 , خواهش می کنم جهت restore کردن بانک هم راهنمایی کنند .

mina.net
شنبه 01 اسفند 1388, 19:20 عصر
بفرمایید
لطف کنید کانکشن استرینگ 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 برنامه باشه هر چند راحتر به نظر می رسه.

majid_vb_2008
یک شنبه 02 اسفند 1388, 14:53 عصر
دوستان يك مشكل جديد

براي پشتيبان گيري مشكلي نيست
ولي درزمان بازگرداني اگر بعد از باز كردن برنامه يك ركود جديد به بانك اضافه بشه در زمان باز گرداني سيستم پيغام مي ده كه بانك در حال استفاده است و نمي تواند بازگرداني كند


كمك كنيد..