تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عمل نسخه احتياطيه والاستعاده لملف قاعدة بيانات Backup/Restore Localdb MDF file
#1
السلام وعليكم ورحمة الله وبركاته

اخواني الاعزاء الرجاء التكرم بمساعده بخصوص عمل نسخه احتياطيه واستعادتها 
لملف قاعدة بيانات 
حيث وانتي اسخدم localdb

وهذا كود الاتصال


كود :
sqlconn = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DB\DBFileName.mdf;Integrated Security=True;Connect Timeout=30")

,هذا كود الباك اب 





كود :
  Dim Sfd As New SaveFileDialog() With {
        .Filter = "Backup Files (*.bak)|*.bak|All Files (*.*)|*.*",
        .FileName = "DBFileName_Backup.bak" ' Default file name for the backup
    }

        If Sfd.ShowDialog() = DialogResult.OK Then
            Cursor = Cursors.WaitCursor

            Try
                ' Check if the local database exists
                If Not checkLocalDB() Then
                    MessageBox.Show("LocalDB not found or could not be opened.", "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Return
                End If

                ' Specify the full path to the database file
                Dim dbFileFullPath As String = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DB\POSDATABASE.mdf")

                Dim sql As String = String.Format("BACKUP DATABASE ""{0}"" TO DISK = '{1}'", dbFileFullPath, Sfd.FileName)

                Using sqlconn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=True;Connect Timeout=30")
                    sqlconn.Open()
                    Using cmd As New SqlCommand(sql, sqlconn)
                        cmd.ExecuteNonQuery()
                    End Using
                End Using

                MsgBox("Backup completed successfully!")
            Catch ex As Exception
                MessageBox.Show("Error: " & ex.Message, "Backup Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                Cursor = Cursors.Default
            End Try
        End If

وهذا كود الاستعاده



كود :
 Dim openFileDialog As New OpenFileDialog()
        openFileDialog.Filter = "Backup Files (*.bak)|*.bak|All Files (*.*)|*.*"

        If openFileDialog.ShowDialog() = DialogResult.OK Then
            Dim backupFilePath As String = openFileDialog.FileName

            ' Create a SqlConnection for your LocalDB
            Dim connectionString As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DB\POSDATABASE.mdf;Integrated Security=True;Connect Timeout=30"

            Using sqlconn As New SqlConnection(connectionString)
                sqlconn.Open()

                ' Construct the SQL command for database restore
                Dim restoreSql As String = $"USE Master; ALTER DATABASE POSDATABASE SET Single_User WITH Rollback Immediate; RESTORE DATABASE POSDATABASE FROM DISK='{backupFilePath}' WITH REPLACE; ALTER DATABASE POSDATABASE SET Multi_User;"

                ' Execute the SQL command
                Using cmd As New SqlCommand(restoreSql, sqlconn)
                    cmd.ExecuteNonQuery()
                End Using

                ' Close the SqlConnection
                sqlconn.Close()

                MessageBox.Show("Restore completed successfully!")
            End Using
        End If


المشكله الان انه الباك اب يشتغل وينشئ نسخه مؤقته
وحين الاسترجاع كل شي تمام ويقلي تم الاسترجاع 
بس لما اشوف السجلات مافي شي رجع من السجلات ولا كاني عملت استرجاع
وللعلم تم التاكد من ملف الباك اب لمعرفة المحتويات وكلها موجوده
المشكله في الاسترجاع فقط

هل احد عنده  فكره او كود يساعدني فيه اكون شاكر لكم
الرد }}}
تم الشكر بواسطة:
#2
Backup

cmd.CommandText = "BACKUP DATABASE lite TO DISK='" & My.Application.Info.DirectoryPath & "\Backup\145444.BAK'"

Restore

Dim con As New SqlConnection((.................................................."))
Dim database As String = con.Database.ToString()
If con.State <> ConnectionState.Open Then
con.Open()

End If

Dim sqlStmt2 As String = String.Format("ALTER DATABASE [" + "lite" + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE")
Dim bu2 As SqlCommand = New SqlCommand(sqlStmt2, con)
bu2.ExecuteNonQuery()
Dim sqlStmt3 As String = "USE MASTER RESTORE DATABASE [" + "lite" + "] FROM DISK='" + TextBox1.Text + "'WITH REPLACE"
Dim bu3 As SqlCommand = New SqlCommand(sqlStmt3, con)
bu3.ExecuteNonQuery()
Dim sqlStmt4 As String = String.Format("ALTER DATABASE [" + "lite" + "] SET MULTI_USER")
Dim bu4 As New SqlCommand(sqlStmt4, con)
bu4.ExecuteNonQuery()
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم