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.

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?

  • Estrarre un gruppo SQLCLR
  • Accesso utente dominio a SQL Server Reporting Services 2005 su IIS7
  • Imansible visualizzare tutti i cataloghi in un server collegato MSSQL
  • SQL Server 2005 con problemi di Windows 7
  • Backup di SQL Server 2005 per i 5 giorni precedenti su disco?
  • Aggiornamento di SQL Server 2005 a 2008 - sono i file MDF compatibili binari?
  • Tabella di risparmio di timeout in SQL Server
  • SQL Server 2005: copiare l'agente di SQL Server?
  • 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.