Come posso ripristinare a un backup SQL che ho fatto due giorni fa?

I disastri del database si verificano solo ad altre persone, giusto? DESTRA?!?

Sono sicuro che questo non è mai accaduto a nessuno fin dall'inizio della storia del computer, ma, credo o no, sto avendo un problema con un ripristino del database. Forse puoi aiutarti. Spero che sia qualcosa di veramente semplice.

  • Come posso disinstallare MySQL completamente?
  • Combinazione di cluster di failover e mirroring del database
  • Database (MySQL) e vita SSD - "lotto" di scrive a DB
  • Quali sono le attività di base che devono essere fatte per mantenere un database SQL Server 2005 sano?
  • Aggiornamento di un database MySQL
  • Utilizza varchar (max) o text SQL?
  • Domanda: Come posso ripristinare un backup che ho fatto due giorni fa?

    La GUI non sembra funzionare e non riesco a trovare il diritto TSQL per farlo manualmente.

    DETTAGLI

    Ho eseguito un backup di un database di SQL Server 2005 il lunedì 9 novembre 2009 alle ore 9:30 utilizzando SQL Server Management Studio con le seguenti opzioni:

    Modello di ripristino: Semplice
    Tipo di backup: pieno
    Componente di backup: database
    Scadenza dopo: 0 giorni
    Destinazione: Disco

    Vorrei ripristinare questo backup, ma sono in esecuzione in alcuni problemi.

    Tenta # 1: utilizza la GUI

    Utilizzate le seguenti opzioni nella window di dialogo Ripristina database:

    Per il database: [MyDatabaseName] Ad un certo punto: '11 / 9/2009 12:00:00 AM 0 millisecondi Dal database: [MyDatabaseName] Sovrascrivi il database esistente: true. Stato di recupero: lasciare il database pronto per l'uso ripristinando …

    Messaggio di errore: Imansible get l'accesso esclusivo perché il database è in uso. Ho cercato di impostare a single_user, riavviare il servizio SQL Server, ecc. Non potrò mai capire come interrompere le connessioni esistenti nella GUI del database di ripristino.

    Tenta # 2: Utilizza TSQL

    ALTER DATABASE [MyDatabaseName] SET SINGLE_USER CON RETRO IMMEDIATO

    ALTER DATABASE [MyDatabaseName] SET RECUPERO COMPLETO GO

    RISPONDERE IL DATABASE [MyDatabaseName] FROM DISK = N'F: \ DatabaseLocation \ BackupName.bak 'CON FILE = 1, NOUNLOAD, RECOVERY, SOSTITUIRE, STATS = 10, STOPAT =' 9 NOVEMBRE 2009 '

    Messaggio: Questo set di backup contiene i record che sono stati registrati prima del punto indicato in tempo. Il database viene lasciato nello stato di ripristino in modo che sia ansible eseguire più rotazioni in avanti.

    Ho provato diverse versioni di quanto sopra con REPLACE, NORECOVERY, RECOVERY, ecc. Ho bisogno di conoscere il tempo di backup al millisecondo esatto? E se è così, come faccio a trovarlo?

    5 Solutions collect form web for “Come posso ripristinare a un backup SQL che ho fatto due giorni fa?”

    Non è ansible ripristinare per indicare in tempo un database di ripristino SIMPLE. Solo i database di modalità di recupero FULL o BULK possono essere ripristinati per puntare in tempo.

    Vedere Recupero a un punto specifico in tempo per la syntax specifica (l'opzione è specificata in RESTORE LOG, non in RESTORE DATABASE). Vedere anche Ripristinare un database in un punto all'interno di un backup per punti più generici sull'uso di STOP AT.

    Sembra che tu sia fisso, ma stavo scrivendo la mia risposta su StackOverflow poi ho scoperto che il qustion era stato chiuso e spostato qui, quindi ecco la mia normale sequenza di command di ripristino del database in T_SQL se ne hai bisogno

    Dovrai usare

     RESTORE FILELISTONLY FROM DISK = 'X: \ path \ MyBackupFilename.BAK'
    

    per get i nomi dei dispositivi logici (che saranno invariati se si ripristina lo stesso database in cui è stato eseguito il backup, altrimenti potrebbe essere diverso)

     Master USE - (non può sedere nel database mentre è stato ripristinato!)
     PARTIRE
    
     - ALTER DATABASE MyDatabase SET SINGLE_USER CON ROLLBACK IMMEDIATO
     ALTER DATABASE MyDatabase SET OFFLINE CON ROLLBACK IMMEDIATE
     PARTIRE
    
     RESTORE DATABASE MyDatabase
         FROM DISK = 'X: \ path \ MyBackupFilename.BAK'
         CON
             SOSTITUIRE,
             NORECOVERY, - Consentono il recupero di più DIFF / TLogs
             STATS = 10, - Mostra il progresso (each 10%)
         MOVE 'MyLogicalName_data' a 'path X: \ MSSQL \ MyDatabaseFile.mdf', 
         MOVE 'MyLogicalName_log' a 'path X: \ MSSQL \ MyDatabaseFile.ldf'
     PARTIRE
    
     - Se è necessario ripristinare un backup successivo DIFF (eseguito dopo questo backup completo):
    
     RESTORE DATABASE MyDatabase
         FROM DISK = 'X: \ path \ MyDatabaseBackup_yyyymmdd_hhmm_Diff.BAK'
         CON
             STATS = 10, - Mostra il progresso (each 10%)
             NORECOVERY - Consentire il recupero di più TLog
     PARTIRE
    
    
     - Ripristino facoltativo di ulteriori log di transazione
     - Ripetere quanto segue per each registro delle transactions, in ordine
    
     RESTORE LOG MyDatabase
         FROM DISK = 'X: \ path \ MyDatabaseBackup_yyyymmdd_hhmm_Trans.BAK'
         CON
             NORECOVERY - Allo recupero di più TLogs
     PARTIRE
    
     - Al termine del ripristino di tutti i file di backup "triggersre" il database
     RESTORE DATABASE MyDatabase CON LA RECUPERO
     PARTIRE
    
     - ** IF ** Il database è stato fatto con diversi nomi logici "rinominare" quelli ora
     ALTER DATABASE MyDatabase MODIFICA FILE 
     (NOME = 'LogicalNameFromBackup_data', NEWNAME = 'NewLogicalName_data')
     PARTIRE
     ALTER DATABASE MyDatabase MODIFICA FILE 
     (NOME = 'LogicalNameFromBackup_log', NEWNAME = 'NuovoLogicalName_log')
     PARTIRE
    
     - Se il backup è stato eseguito quando DB in utente singolo / limitato 
     - cambiare l'accesso di nuovo a "normale"
     - ALTER DATABASE MyDatabase SET MULTI_USER, READ_WRITE CON ROLLBACK IMMEDIATO
     PARTIRE
    

    Se il database è stato ripristinato su un server diverso, sarà anche necessario sincronizzare gli utenti del database con gli accessi del server.

    È ansible uccidere facilmente le connessioni esistenti dalla GUI. Basta andare al Management -> Monitor di attività. Ordina per database e fai clic con il button destro del mouse e uccidi coloro che sono nel db che vuoi ripristinare.

    [modifica]

    Tutto questo presuppone che il tuo account non utilizzi lo stesso database di default, naturalmente! Se è così, vuoi cambiarlo e riconnetelo per primo.

    Avete provato a fare

    1 – Stop Server Sql.

    2- Eliminare o spostare in un altro luogo i file fisici del database crashed (.mdf e .log).

    3- Avviare il server Sql.

    4- Caricare il backup

    Quale database sta eseguendo il ripristino? Assicurarsi che sia diverso da quello db che si sta ripristinando e che non si dispone di query attive nello Studio di gestione dello spazio.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.