Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

SQL Server Backup με asp.net 3.5

Îåêßíçóå áðü ôï ìÝëïò it048. Τελευταία δημοσίευση από το μέλος tasos στις 30-12-2010, 01:58. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-12-2010, 22:44 61538

    SQL Server Backup με asp.net 3.5

    Καλησπέρα. Προσπαθώ μέσω ενός site να κάνω backup μία βάση του SQL Server.

    Παραθέτω τον κώδικα που έχω μέχρι τώρα

    Imports Microsoft.SqlServer.Management.Smo

    Imports Microsoft.SqlServer.Management.Common

    Partial Public Class backup

    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

    Dim srv As New Server

    Dim db As Database

    db = srv.Databases("dbname")

    Dim bk As New backup

    bk.Action = BackupActionType.Database

    End Sub

    End Class

    αλλά το bk.Action μου το βρίσκει λάθος λέγοντας ότι δεν είμαι member στο Project.

    Έχω και τον υπόλοιπο κώδικα για το backup αλλά το πρώτο που δ με αφήνει είναι αυτό.

    Καμία βοήθεια?

  •  12-12-2010, 23:23 61539 σε απάντηση της 61538

    Απ: SQL Server Backup με asp.net 3.5

    Μπορείς να μας δώσεις ακριβώς το λάθος που σου βγάζει γιατί υποψιάζομαι ότι δεν έχεις τα απαραίτητα permissions.


    Antonios Chatzipavlis

  •  13-12-2010, 00:08 61540 σε απάντηση της 61539

    Απ: SQL Server Backup με asp.net 3.5

    Ότι γράφω πάνω είναι στον κώδικα του VS2008. Δε τρέχω την εφαρμογή.

    λέει Error 1 'Action' is not a member of 'Project.backup'.

  •  13-12-2010, 10:32 61543 σε απάντηση της 61540

    Απ: SQL Server Backup με asp.net 3.5

    καλημέρα

    έχεις κάνει reference στο project σου το Microsoft.SqlServer.SmoExtended.dll ;


    Antonios Chatzipavlis

  •  13-12-2010, 10:42 61546 σε απάντηση της 61540

    Απ: SQL Server Backup με asp.net 3.5

    Έχω την αίσθηση ότι η εντολή Dim bk As New backup δημιουργεί ένα object για τη web φόρμα backup και όχι από το SMO. Ο κώδικας που έκανες paste έχει το Partial Public Class backup. Δοκίμασε να δώσεις όλο το namespace της κλάσης που θέλεις.
    Τάσος Καραγιάννης

    Baby debugging steps...
  •  13-12-2010, 11:38 61549 σε απάντηση της 61538

    Απ: SQL Server Backup με asp.net 3.5

    Διάβασε λίγο πιο προσεκτικά τον κώδικα που έχεις γράψει...

    Partial Public Class backup

    Inherits System.Web.UI.Page

    Η κλάση σου κληρονομεί από το System.Web.UI.Page. Το Action δεν είναι property του Page. Σωστά ο compiler τα... έπαιξε!! Το γεγονός ότι ονόμασες την κάση backup δεν της εξασφαλίζει αυτόματα ότι κάνει και κάνει και backup!!


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  13-12-2010, 11:44 61550 σε απάντηση της 61549

    Απ: SQL Server Backup με asp.net 3.5

    Τώρα που το είδα καλύτερα θα συμφωνήσω με το Markos


    Antonios Chatzipavlis

  •  13-12-2010, 18:45 61583 σε απάντηση της 61550

    Απ: SQL Server Backup με asp.net 3.5

    Οπότε πως πρέπει να το γράψω?

  •  13-12-2010, 20:40 61584 σε απάντηση της 61538

    Απ: SQL Server Backup με asp.net 3.5

    Γιατί δεν τρέχεις ένα script απλά για να το κάνεις? 





  •  13-12-2010, 21:24 61587 σε απάντηση της 61583

    Απ: SQL Server Backup με asp.net 3.5

    Δοκίμασε το εξής:

    Dim bk As New Microsoft.SqlServer.Management.Smo.Backup
    
    bk.Action = BackupActionType.Database


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  13-12-2010, 23:25 61600 σε απάντηση της 61587

    Απ: SQL Server Backup με asp.net 3.5

    Σωστός. Thanks
  •  30-12-2010, 00:08 61996 σε απάντηση της 61600

    Απ: SQL Server Backup με asp.net 3.5

    Χρόνια πολλά

    Λοιπόν παιδιά κατάφερα να γράψω τον παρακάτω κώδικα για 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

     

    Ευχαριστώ πολύ

  •  30-12-2010, 01:58 61997 σε απάντηση της 61996

    Απ: SQL Server Backup με asp.net 3.5

    Όταν καλείς την restore περνάς σαν παράμετρο το FileUpload1.FileName. Αυτό το property περιέχει το filename και όχι όλο το path. Κάνε πρώτα save το αρχείο σε κάποιο folder δικό σου και δώσε αυτό το path στην restore. 

    Π.χ.

    FileUpload1.SaveAs(Server.MapPath("~/App_Data/UploadedFiles/" & FileUpload1.FileName))
    restore("database", Server.MapPath("~/App_Data/UploadedFiles/" & FileUpload1.FileName))


    Τάσος Καραγιάννης

    Baby debugging steps...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems