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

 

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

Backup script σε C# για SQL Server 2005

Îåêßíçóå áðü ôï ìÝëïò tarasiadis. Τελευταία δημοσίευση από το μέλος tarasiadis στις 29-09-2009, 10:37. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  28-09-2009, 13:19 54030

    Backup script σε C# για SQL Server 2005

    Καλησπέρα σε όλους,
    σύμφωνα με το άρθρο http://www.geekpedia.com/tutorial180_Backup-and-restore-SQL-databases.html και προσωπικές παρεμβάσεις για wpf κατάφερα να δημιουργήσω ένα script για backup μιας βάσης σε τοπικό αρχείο.

    Το Script
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    private void BackupDB(object sender, RoutedEventArgs e)
            {
                // Create a new connection to the selected server name
                ServerConnection srvConn = new ServerConnection("server");
                srvConn.LoginSecure = false;
                srvConn.Login = "login";
                srvConn.Password = "pass";
                // Create a new SQL Server object using the connection we created
                Server srvSql = new Server(srvConn);
    
                // Configure save file dialog box
                Microsoft.Win32.SaveFileDialog saveBackupDialog = new Microsoft.Win32.SaveFileDialog();          
    
                // If there was a SQL connection created
                if (srvSql != null)
                {
                // Show save file dialog box
                Nullable<bool> result = saveBackupDialog.ShowDialog();
    
                if (result == true)
                    {
                        Backup bkpDatabase = new Backup();
                        bkpDatabase.Action = BackupActionType.Database;
                        bkpDatabase.Database = "dbname";
                        BackupDeviceItem bkpDevice = new BackupDeviceItem(saveBackupDialog.FileName, DeviceType.File);
                        bkpDatabase.Devices.Add(bkpDevice);
                        bkpDatabase.SqlBackup(srvSql);
                        MessageBox.Show("Το αντίγραφο ασφαλείας (backup) της εφαρμογής δημιουργήθηκε επιτυχώς.");
                    }
                }
                else
                {
                    MessageBox.Show("A connection to a SQL server was not established.");
                }
            }

    Ωστόσο έχω φτάσει στο σημείο όπου επιλέγει ο χρήστης το όνομα αρχείου του backup, πατάει ΟΚ καιενώ βλέπω ότι στο Server Management Studio δημιουργείτε το path για το backup, δεν το τρέχει, δηλαδή δεν δημιουργείτε στην ουσία το αρχείο backup.

    Καμιά ιδέα για το τι μπορεί να φταίει; Κάτι σε δικαιώματα ή κάτι άλλο;
    Στην συνέχεια θα προχωρήσω και στο restore της βάσης.

    Ευχαριστώ.
  •  28-09-2009, 13:44 54034 σε απάντηση της 54030

    Απ: Backup script σε C# για SQL Server 2005

    Καταρχήν, μία ερώτηση για SQL Server θα πρέπει να χγίνεται στο forum για SQL Server, όχι στο forum για WPF.

    Όσον αφορά το backup, το path που χρησιμοποιείς είναι πάντα τοπικό στον SQL Server. Αν π.χ. δώσεις ως path το c:\mybackup.bak, αναφέρεσαι στο C: του SQL Server, όχι στο C: του PC που τρέχει την εφαρμογή σου. Κοίταξες στο server να δεις αν δημιουργήθηκε εκεί το backup?

    Αν θέλεις οπωσδήποτε το backup να δημιουργηθεί σε άλλο μηχάνημα θα πρέπει να έχεις δημιουργήσει ένα file share στο οποίο θα έχει πρόσβαση το account του SQL Server service. Μετά, θα πρέπει να δώσεις το path του share, π.χ. \\myclient\myshare\mybackup.bak, για να γίνει το backup.

    Τέλος, αντί να περνάς απευθείας το file path από το dialog box στο SqlBackup method, είναι καλύτερο να φτιάξεις μία μέθοδο η οποία θα δέχεται ως παράμετρο μόνο το όνομα του server, της βάσης και το path ως string. Έτσι θα είναι πολύ ευκολότερο να πειραματιστείς μέχρι να βρεις τί δουλεύει, χωρίς να μπερδεύονται στα πόδια σου WPF και UI.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  29-09-2009, 10:37 54060 σε απάντηση της 54034

    Απ: Backup script σε C# για SQL Server 2005

    Παναγιώτης Καναβός:

    Καταρχήν, μία ερώτηση για SQL Server θα πρέπει να χγίνεται στο forum για SQL Server, όχι στο forum για WPF.

    ΟΚ sorry απλά η όλη διαδικασία γίνεται σε wpf γιαυτο το ρώτησα εδώ.

    Παναγιώτης Καναβός:

    Όσον αφορά το backup, το path που χρησιμοποιείς είναι πάντα τοπικό στον SQL Server. Αν π.χ. δώσεις ως path το c:\mybackup.bak, αναφέρεσαι στο C: του SQL Server, όχι στο C: του PC που τρέχει την εφαρμογή σου. Κοίταξες στο server να δεις αν δημιουργήθηκε εκεί το backup?

    Έχεις δίκαιο. Το δημιουργεί στον server.

    Παναγιώτης Καναβός:

    Αν θέλεις οπωσδήποτε το backup να δημιουργηθεί σε άλλο μηχάνημα θα πρέπει να έχεις δημιουργήσει ένα file share στο οποίο θα έχει πρόσβαση το account του SQL Server service. Μετά, θα πρέπει να δώσεις το path του share, π.χ. \\myclient\myshare\mybackup.bak, για να γίνει το backup.

    Αυτό δεν το κατάλαβα αλλά θα το ψάξω.

    Παναγιώτης Καναβός:

    Τέλος, αντί να περνάς απευθείας το file path από το dialog box στο SqlBackup method, είναι καλύτερο να φτιάξεις μία μέθοδο η οποία θα δέχεται ως παράμετρο μόνο το όνομα του server, της βάσης και το path ως string. Έτσι θα είναι πολύ ευκολότερο να πειραματιστείς μέχρι να βρεις τί δουλεύει, χωρίς να μπερδεύονται στα πόδια σου WPF και UI.


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