نمایش نتایج 1 تا 40 از 55

نام تاپیک: حل مشکل پشتیبان گیری و بازیابی برای همیشه

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #4
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    سلام دوست عزیز کارهایی که بهشون اشاره کردی (برنامه حسابداری هلو) کد نویسی بسیار ساده ای داره . در واقع یکی از ویژگیهای جدید .Net این اجازه رو به برنامه نویس میده که بدون استفاده از توابع Sql و تنها با اضافه کردن چند رفرنس و اجرای فانکشهای از پیش تعریف شده اونها ، اعمال مورد نظر رو انجام بده .
    مراحل انجام کار رو برات توضیح میدم .
    ابتدا رفرنس های زیر رو به برنامتون اضافه کنید :
    Microsoft.SqlServer.Smo
    Microsoft.SqlServer.ConnectionInfo
    بعد nameSpace های زیر رو به صورت زیر به کلاستون Import کنید :
    Imports System.Data.SqlClient
    Imports Microsoft.SqlServer.Management.Smo
    Imports Microsoft.SqlServer.Management.Common

    کد زیر رو برای گرفتن پشتیبان از دیتابیس استفاده کنید.
     Public Shared Sub BackupDatabase(ByVal ConnectionStr As String, ByVal DevicePath As String)
    Dim DataName As String="DataBaseName.bak"
    Using cnn As New SqlConnection(ConnectionStr)
    cnn.Open()
    Dim Srvcon As New ServerConnection(cnn)
    Dim Srv As New Server(Srvcon)
    ' Create backup device item for the backup
    Dim bdi As New BackupDeviceItem(DevicePath & DataName, 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 = cnn.Database.ToString()
    .LogTruncation = BackupTruncateLogType.Truncate
    'Backup.ExpirationDate = New DateTime(2007, 5, 1)
    ' Run the backup
    .SqlBackup(Srv)
    End With
    End Using
    End Sub

    پارامترهای این رویه شامل کانکشن استرینگ که رشته مربوط به اتصال به دیتابیس رو مشخص میکنه و Device Path که مسیر ذخیره بانک اطلاعاتی رو مشخص میکنه هست . شما میتونید با استفاده از یک SaveFileDialog این مسیر رو از کاربر دریافت کنید .
    متغییر DataName نام فایل پشتیبان رو مشخص میکنه که پسوند اون bak است.
    تا اینجا مربوط به پشتیبان گیری بود. برای انجام عمل restore از رویه زیر استفاده کنید.:
    Public Shared Sub RestoreBackup(ByVal ConnectionStr As String, ByVal DevicePath As String)
    Using cnn As New SqlConnection(ConnectionStr)
    cnn.Open()
    Dim DBName As String = cnn.Database
    cnn.ChangeDatabase("master")
    Dim Srvcon As New ServerConnection(cnn)
    Dim Srv As New Server(Srvcon)
    ' Create backup device item for the backup
    Dim bdi As New BackupDeviceItem(DevicePath, DeviceType.File)
    ' Create the restore object
    Dim Restore As New Restore()
    'cnn.Close()
    With Restore
    .Devices.Add(bdi)
    .NoRecovery = False
    .ReplaceDatabase = True
    .Database = DataBaseName.bak
    ' Restore the database
    Srv.KillAllProcesses(DBName) 'Important Code For Remove All Processes
    .SqlRestore(Srv)
    End With
    End Using
    End Sub


    پارامترها مانند قبلند با این تفاوت که Device Path در اینجا شامل مسیر ونام بانک اطلاعاتی است که میتوان با استفاده از OpenFileDialog آن را از کاربر دریافت نمود . متد ChangeDatabase نیز باعث میشه مشکلی که جناب rezaei manesh بهش اشاره کردن پیش نیاد . برای اطمینان بیشتر متد KillAllProcesses رو هم استفاده کنید .
    لازم به ذکر است که این روش رو خودم بارها پیاده سازی کردم وکاملا هم جواب داده . اگه جایی مشکل پیدا کردی مطرح کن .
    آخرین ویرایش به وسیله Sub Zero : دوشنبه 16 اردیبهشت 1387 در 11:18 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •