PDA

View Full Version : backup گرفتن از بانک sql از طریق vb.net



za2124
سه شنبه 15 اردیبهشت 1388, 12:51 عصر
چطور میشه از طریق کد نویسی در vb.net از بانک sql ، پشتیبان گرفت؟ بطوریکه یک کاربر با کلیک بر روی دکمه پشتیبان گیری بتواند از بانک پشتیبان تهیه کند

morteza_261
سه شنبه 15 اردیبهشت 1388, 13:07 عصر
سلام
ابتدا رفرنس های زیر رو به برنامتون اضافه کنید :
Microsoft.SqlServer.Smo
Microsoft.SqlServer.ConnectionInfo

سپس nameSpace های زیر رو به صورت زیر Import کنید :


Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common





'پشتیبان گیری از بانک
Dim DevicePath AsString
With SaveFileDialog1
.FileName = "Institute.bak"
.DefaultExt = "bak"
.Filter = "DateBase Backup File(*.bak)|*.bak"
.OverwritePrompt = True
EndWith
SaveFileDialog1.ShowDialog()
DevicePath = SaveFileDialog1.FileName

Using cnn AsNew SqlConnection(" Connection String ")
cnn.Open()
Dim Srvcon AsNew ServerConnection(cnn)
Dim Srv AsNew Server(Srvcon)
' Create backup device item for the backup
Dim bdi AsNew BackupDeviceItem(DevicePath, DeviceType.File)
' Create the backup informaton
Dim Backup AsNew Backup
Backup.Devices.Add(bdi)
With Backup
'Type Of Backup
.Action = BackupActionType.Database
.BackupSetDescription = "Backup DataBase"
.BackupSetName = "DB"
.Database = cnn.Database.ToString()
.LogTruncation = BackupTruncateLogType.Truncate
'Backup.ExpirationDate = New DateTime(2007, 5, 1)
' Run the backup
.SqlBackup(Srv)
EndWith
EndUsing





'بازیانی نسخه پشتیبان

Me.Hide()

Dim DevicePath AsString
With OpenFileDialog1
.FileName = "Institute.bak"
.DefaultExt = "bak"
.Filter = "DateBase Backup File(*.bak)|*.bak"
.ReadOnlyChecked = True
EndWith


OpenFileDialog1.ShowDialog()
DevicePath = OpenFileDialog1.FileName
FrmWhite.Show()
Application.DoEvents()
Using cnn AsNew SqlConnection("Connection String")
cnn.Open()
Dim DBName AsString = cnn.Database
cnn.ChangeDatabase("master")
Dim Srvcon AsNew ServerConnection(cnn)
Dim Srv AsNew Server(Srvcon)
' Create backup device item for the backup
Dim bdi AsNew BackupDeviceItem(DevicePath, DeviceType.File)
' Create the restore object
Dim Restore AsNew Restore()
'cnn.Close()

With Restore
.Devices.Add(bdi)
.NoRecovery = False
.ReplaceDatabase = True
.Database = DBName
' Restore the database
Srv.KillAllProcesses(DBName) 'Important Code For Remove All Processes
.SqlRestore(Srv)
EndWith
EndUsing
FrmWhite.Close()
Me.Show()
EndSub

bardia goharbin
دوشنبه 21 اردیبهشت 1388, 14:49 عصر
آیا با دستورات فوق میتوان توسط توسط یک Station در شبکه از روی SQL موجود در دستگاه Server هم Backup تهیه کرد یا فقط بر روی Local قابل استفاده است؟

mohsen_csharp
دوشنبه 21 اردیبهشت 1388, 17:58 عصر
backup ها همیشه روی سرور انجام می گیرد شما نمی توانید روی یک کلاینت backup بگیرید.
حتی روی سرور هم نمی شود در بعضی از مسیرهای خاص مانند دسکتاپ backup گیری کرد.
در ضمن یک برنامه کامل با c# و توسط smo اینجا http://barnamenevis.org/forum/showthread.php?t=153480 قرار داده شده است.

morteza_261
سه شنبه 22 اردیبهشت 1388, 01:56 صبح
آیا با دستورات فوق میتوان توسط توسط یک Station در شبکه از روی SQL موجود در دستگاه Server هم Backup تهیه کرد یا فقط بر روی Local قابل استفاده است؟

در جواب سوالتون باید بگم، بله با همین کد یشه...ولی من دقیقا نمیدونم چطوری یعنی کار نکردم...ولی میدونم که میشه و یه سری موارد هست که باید رعایت بشه
1.دادن مسیر شبکه ای
2. دادن سطوح دسترسی مورد نیاز
3.و...

bardia goharbin
سه شنبه 22 اردیبهشت 1388, 09:34 صبح
دوست عزیز آقا مرتضی

من متاسفانه کدهای شما رو نتونستم توی VS2005 اجرا کنم و چند خطا داره دلیلش چیه?

morteza_261
سه شنبه 22 اردیبهشت 1388, 16:28 عصر
دوست عزیز آقا مرتضی

من متاسفانه کدهای شما رو نتونستم توی VS2005 اجرا کنم و چند خطا داره دلیلش چیه?

ببخشید یه مطلب یادم رفته بود که همون بالا اضافه کردم تاا کاربران دیگه هم میان ببینن

شرمنده دوستان

ایام به کام

hamid1752
چهارشنبه 23 اردیبهشت 1388, 09:13 صبح
اين رفرنسهايي كه بالا گذاشتيد ( microsoft.sqlserver.smo) و (Microsoft.SqlServer.ConnectionInfo) و Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common را از كجا مي توان پيدا كرد؟

morteza_261
یک شنبه 27 اردیبهشت 1388, 00:14 صبح
اين رفرنسهايي كه بالا گذاشتيد ( microsoft.sqlserver.smo) و (Microsoft.SqlServer.ConnectionInfo) و Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common را از كجا مي توان پيدا كرد؟

سلام
با عرض معذرت بخاطر دیر جواب دادن

دوست عزیز این رفرنس ها در خود دا ن وجودداره..میتونی از مسیر زیر اونا روبه برنامه اضافه کنی:
Project->AddReference

ایام به کام

azamkaboutari
سه شنبه 12 خرداد 1388, 14:29 عصر
سلام
با عرض معذرت بخاطر دیر جواب دادن

دوست عزیز این رفرنس ها در خود دا ن وجودداره..میتونی از مسیر زیر اونا روبه برنامه اضافه کنی:
Project->AddReference

ایام به کام


من از sql 2000 استفاده می کنم و اصلا این دو کامپوننت رو ندارم، باید چی کار کنم؟

غلامرضا شریفی
سه شنبه 30 تیر 1388, 19:27 عصر
سلام
سلام
ابتدا رفرنس های زیر رو به برنامتون اضافه کنید :
Microsoft.SqlServer.Smo
Microsoft.SqlServer.ConnectionInfo

سپس nameSpace های زیر رو به صورت زیر Import کنید :

وقتي به Connection String مسير شبكه را ميدهم خطا ميگيرد ولي از روي سيستم خودم به درستي عمل ميكند

morteza_261
پنج شنبه 01 مرداد 1388, 01:06 صبح
من از sql 2000 استفاده می کنم و اصلا این دو کامپوننت رو ندارم، باید چی کار کنم؟

سلام
این دو کامپوننت رو از خود برنامه ویزوال استودیو باید اضافه کنید نه SQL