Χρόνια πολλά
Λοιπόν παιδιά κατάφερα να γράψω τον παρακάτω κώδικα για backup & restore. Τοπικά στο pc μ παίζει μια χαρά, αλλά όταν το βάζω σε remote server και κάνω restore μ βγάζει το παρακάτω σφάλμα.
Cannot open backup device 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Backup\database.bak'. Operating system error 2(failed to retrieve text for this error. Reason: 15100).
Αυτό που καταλαβαίνω εγώ είναι ότι ενώ όταν κάνω backup ο sql server σώζει αρχικά το .bak σε έναν temp folder και από εκεί το κάνω download, όταν κάνω restore πάει να διαβάσει από \MSSQL\Backup και δε βρίσει τπτ σωστά? Τι αλλαγή πρέπει να κάνω?
Ο κώδικας είναι παρακάτω.
Imports System
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Collections.Specialized
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Win32
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.IO.Path
Imports System.Web.Configuration
Public Class backup
Inherits System.Web.UI.Page
Private Sub BackupBak(ByVal databaseName As String)
Dim tempPath As String = System.IO.Path.GetTempPath()
Dim sql As New SqlClient.SqlConnection
sql.ConnectionString = WebConfigurationManager.ConnectionStrings(
"new_patientsConnectionString").ConnectionString
sql.Open()
Dim cmd As New SqlClient.SqlCommand
cmd.CommandType = CommandType.Text
cmd.Connection = sql
Dim backupName As String = databaseName + ".bak"
Dim bakFile As String = System.IO.Path.Combine(tempPath, backupName)
cmd.CommandText = String.Format("BACKUP DATABASE [{0}] TO DISK = N'{1}'", databaseName, bakFile)
Try
cmd.ExecuteNonQuery()
sql.Close()
Catch ex As Exception
Response.Write("Error1:" & ex.Message)
Response.Write("Error1:" & ex.Source)
Response.Write("Error1:" & ex.StackTrace)
End Try
DownloadFile(backupName, bakFile)
End Sub
Sub DownloadFile(ByVal strFileName As String, ByVal strPath As String)
Response.ContentType = "text/plain"
Response.AddHeader("Content-Disposition", "attachment filename=" & strFileName)
Response.TransmitFile(strPath)
Response.End()
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
BackupBak("database")
End Sub
Sub restore(ByVal databaseName As String, ByVal bakFile As String)
If FileUpload1.HasFile Then
Dim sql As New SqlClient.SqlConnection
sql.ConnectionString = WebConfigurationManager.ConnectionStrings(
"new_patientsConnectionString").ConnectionString
sql.Open()
Dim cmd As New SqlClient.SqlCommand
cmd.CommandType = CommandType.Text
cmd.Connection = sql
cmd.CommandText =
String.Format("USE master RESTORE DATABASE [{0}] FROM DISK = N'{1}' WITH REPLACE", databaseName, bakFile)
Try
cmd.ExecuteNonQuery()
sql.Close()
Catch ex As Exception
Response.Write(
"Error1:" & ex.Message)
Response.Write(
"Error1:" & ex.Source)
Response.Write(
"Error1:" & ex.StackTrace)
End Try
End If
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
restore("database", FileUpload1.FileName)
End Sub
End
Class
Ευχαριστώ πολύ