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

 

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

SQLDMO Restore - RestoreSink Ενημέρωση του % ολοκλήρωσης

Îåêßíçóå áðü ôï ìÝëïò moruin. Τελευταία δημοσίευση από το μέλος moruin στις 14-12-2006, 10:07. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-12-2006, 12:55 22054

    Confused [*-)] SQLDMO Restore - RestoreSink Ενημέρωση του % ολοκλήρωσης

    Καλημέρα. Χρειάζομαι βοήθεια σε ένα θέμα του SQLDMO.
    Έχω φτιάξει ένα buckup manager για να ενσωματωθεί σε ένα mini erp. Όταν κάνει buckup - restore μιας βάσης θέλουν οι users να βλέπουν ένα progress της διαδικασίας.
    Η ρουτίνα PersentComplete που δίνει το DMO για το restore object πολύ απλά δεν υπάρχει. Με μια μικρή έρευνα το ανακάλυψα στο object RestoreSink το οποίο όμως δεν είναι registered οπότε η άμεση χρήση του είναι αδύνατη.
    Αν έχει κάποιος καμία ιδέα είναι ευπρόσδεκτη.Smile

    Και τώρα τα δύσκολα: δεν γράφω σε .net αλλά σε delphi, μπορώ όμως να προσαρμώσω την όποια λύση ανάλογα. Wink

    Ευχαριστώ προκαταβολικά.

    System crashed: Coffee_Cup.Content is null
    Please assign coffee to Content and press any key to continue and any other key to cancel

    Καλέας Κων/νος
  •  13-12-2006, 13:39 22140 σε απάντηση της 22054

    Απ: SQLDMO Restore - RestoreSink Ενημέρωση του % ολοκλήρωσης

    η βρωμικη λυση:

    --**************************************

    --

    -- Name: sample code that shows how to r

    -- eturn progress info from long running SP

    -- s

    -- Description:Some sample code that sho

    -- ws how to return progress info from long

    -- running SPs. This is useful for reporti

    -- ng purposes or to include other mechanis

    -- ms to control the SP execution.

    -- By: Umachandar

    details.--**************************************

    --

    --To store the progress details

    /*

    You can make this AS complex as you want BY adding more progress details,

    mechanism TO pause the job etc.

    */

    CREATE TABLE ##Progress( Step int , ItTookSoLong int )

    GO

    CREATE PROC EverRunningProc

    AS

    DECLARE @step int , @Delay char(10)

    SELECT @step = 1

    WHILE( 1 = 1)

    BEGIN

    IF @step = 1000 BREAK

    INSERT ##Progress VALUES( @Step , 0 )

    -- Do random delay between 1 to 45 secon

    -- ds

    SELECT @Delay = CONVERT( varchar, DATEADD( ss, CEILING( RAND()* 44 ),

    '1970-01-01') , 8 )

    WAITFOR DELAY @Delay

    UPDATE ##Progress

    SET ItTookSoLong = datepart( ss, convert( datetime , @Delay ) ) ,

    @Step = Step + 1

    WHERE Step = @Step

    END

    GO

    -- In your app, you can do:

    -- Calculate percentage based on total n

    -- umber of steps

    SELECT MAX( Step ) % 1000.0 AS StepPer

    FROM ##Progress

    και για λιγο διαβασμα:

    http://www.punctualgraphics.com/Articles/A20030711/A20030711_p01.htm

    σε VB

    hope it helps
  •  13-12-2006, 13:56 22142 σε απάντηση της 22054

    Απ: SQLDMO Restore - RestoreSink Ενημέρωση του % ολοκλήρωσης

    λακωνικη απαντηση η απο πανω

    γενικα, δεν μπορεις να ξερεις ποσο θα κρατησει, αφου εξαρταται απο 1002 παραγοντες (π.χ. ο υπολογιστης που τρεχει το προγραμμα σου κατα τι ποσοστο ειναι απασχολημενος, ο server ποσο απασχολημενος ειναι, που βρισκεται το αρχειο που κανεις restore, ποση κινηση εχει το δικτυο, αν ειναι αναδρομος ο Ερμης και αλλα τετοια Stick out tongue )

    με τον βρωμικο τροπο, απλα ρωτας καθε φορα να σου πει που βρισκεται αλλα το μειονεκτημα ειναι πως τον απασχολεις ποιο πολυ.

    Στην ιστοσελιδα που σου προτεινω παραπανω εχει και παραδειγματα με κωδικα και λεει και 2 πραγματακια θεωριας που πιστευω να σε βοηθησουν.
  •  13-12-2006, 14:10 22143 σε απάντηση της 22054

    Απ: SQLDMO Restore - RestoreSink Ενημέρωση του % ολοκλήρωσης

    Ο Παρακάτω κώδικας είναι σέ VB6 και δέν  είναι δύσκολο να προσαρμοστεί σέ .ΝΕΤ ή Delphi

    'Έχουμε ένα progressBar=DBProgress όπου πριν ξεκινήσει η διαδικασία BackUp ή Restore δίνουμε το value=0

    'Παρακάτω είναι ο κώδικας ελπίζω να είναι κατανοητός

    private  WithEvents oSQLServer As SQLDMO.SQLServer
    private  WithEvents oCurBackup As SQLDMO.Backup
    private  WithEvents oCurRestore As SQLDMO.Restore

    Private Sub Form_Load()
       Set oSQLServer = New SQLServer
       Set oCurBackup = New Backup
       Set oCurRestore = New Restore

    end sub

    private sub BeginBackUp()

            oCurBackup.Database = "Όνομα Βάσης"
            oCurBackup.TruncateLog = SQLDMOBackup_Log_Truncate
            oCurBackup.Devices = "Όνομα Device"

    ' To OptReplace είναι ένα CheckBox το οποίο μας δηλώνει άν Θέλουμε να Διαγράψουμε τα προηγούμενα BackUp στο Device ή να κανουμε Append
            If OptReplace.Value = True Then
             oCurBackup.Initialize = True
            ElseIf Optadd.Value = True Then
             oCurBackup.Initialize = False
            End If
            oCurBackup.PercentCompleteNotification = 1
            oCurBackup.BackupSetName ="Όνομα Backup"
            oCurBackup.SQLBACKUP oSQLServer

    end sub

    Private Sub BeginRestore()

            oCurRestore.PercentCompleteNotification = 1
            oCurRestore.Database = "Όνομα Βάσης"
            oCurRestore.Devices = "Όνομα Device"
            oCurRestore.FileNumber = 1 'Ο Αριθμός του BackUp στο Device
            oCurRestore.SQLRestore oSQLServer

    end sub

    'Εδώ πιάνεις το Percent όταν κάνεις Backup Προσοχή το ποσοστό έρχεται κατά 10,20,30....κ.λ.π

    Private Sub oCurBackup_PercentComplete(ByVal Message As String, ByVal Percent As Long)
         If Message <> "" Then
             DBProgress.Value = Percent
             DoEvents
         End If
    End Sub

    'Εδώ πιάνεις το Percent όταν κάνεις Restore Προσοχή το ποσοστό έρχεται κατά 10,20,30....κ.λ.π


    Private Sub oCurRestore_PercentComplete(ByVal Message As String, ByVal Percent As Long)
         If Message <> "" Then
             DBProgress.Value = Percent
             DoEvents
         End If
    End Sub

     

    'Τα υπόλοιπα Κομμάτια του κώδικα που χρειάζεται το SQLDMO δέν τα βάζω γιατί Ζήτησες μόνο σέ ποιά κομμάτια πιάνεις το Percent όταν κάνεις BackUp ή Restore


    Ιωάννης Μανουσάκης
  •  14-12-2006, 10:07 22193 σε απάντηση της 22143

    Απ: SQLDMO Restore - RestoreSink Ενημέρωση του % ολοκλήρωσης

    Ευχαριστώ και τους 2. Alexnir δε τη δοκίμασα τη λύση γιατί απλά δεν είναι στο σχεδιασμό της εφαρμογής η χρήση sql scripts. Imano τη λύση που πρότεινες τη δοκίμασα ήδη, το μόνο πρόβλημα είναι ότι το event PersentComplete, που στη ουσία ανήκει στα objects BackupSink & RestoreSink, δε γίνεται implement στη delphi! Οπότε πρέπει να αντιμετωπίσω αυτό το πρόβλημα Sad. Και πάλι ευχαριστώ και τους 2.
    System crashed: Coffee_Cup.Content is null
    Please assign coffee to Content and press any key to continue and any other key to cancel

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