2008-09-23 16 views
82

Sono stato troppo rilassato con l'esecuzione di backup di DB sui nostri server interni.Che cos'è un semplice programma o script da riga di comando per eseguire il backup dei database del server SQL?

Esiste un semplice programma a riga di comando che è possibile utilizzare per eseguire il backup di determinati database in SQL Server 2005? O c'è un semplice VBScript?

+5

Personalmente, ho di gran lunga migliore fortuna con le applicazioni al fine di limoni e corsi d'arancio utilità. I programmi command lime sono molto più difficili di quanto valgano. – Jim

risposta

94

Per eseguire il backup di un singolo database dalla riga di comando, utilizzare osql o sqlcmd.

"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe" 
    -E -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak' WITH FORMAT" 

Si potrà anche leggere la documentazione sul BACKUP e RESTORE e general procedures.

+3

C'è un buon script per il backup di tutti gli utenti database in una volta qui: http://www.mssqltips.com/tip.asp?tip = 1070 –

+0

Usa SQLBackupAndFTP. Seleziona "Esegui il backup di tutti i database". Anche i database creati successivamente verranno sottoposti a backup. –

+6

La documentazione dice che 'WITH FORMAT' formatta il supporto di archiviazione:" L'opzione FORMAT invalida l'intero contenuto multimediale, ignorando qualsiasi contenuto esistente. "Assicurati che questo sia ciò che desideri. – alexg

8

Schedule quanto segue per il backup di tutti i database:

Use Master 

Declare @ToExecute VarChar(8000) 

Select @ToExecute = Coalesce(@ToExecute + 'Backup Database ' + [Name] + ' To Disk =  ''D:\Backups\Databases\' + [Name] + '.bak'' With Format;' + char(13),'') 
From 
Master..Sysdatabases 
Where 
[Name] Not In ('tempdb') 
and databasepropertyex ([Name],'Status') = 'online' 

Execute(@ToExecute) 

Ci sono anche maggiori dettagli sul mio blog: come Automate SQL Server Express Backups.

+0

Puoi approfondire come programmare? –

+0

Per favore leggi il mio post sul blog. Fornisce dettagli su tutto ciò che devi sapere. – GateKiller

+0

Penso che la domanda chieda qualcosa che gira * all'esterno * di SQL Server. – bzlm

-10

Se si riesce a trovare i file di DB ... "DBFiles cp backup /"

Quasi di sicuro non è consigliabile nella maggior parte dei casi, ma è semplice come tutto getup.

+1

NON farlo se SQL Server è in esecuzione, anche se non lo sta utilizzando. –

+0

Funziona anche? – bzlm

+5

Le probabilità di utilizzare questo metodo per eseguire correttamente il backup e il ripristino di un database sono molto ridotte. Funzionerà solo IF, sia durante il backup che il ripristino: nessun processo di SQL Server è in esecuzione, si identificano e si copiano TUTTI i file binari coinvolti, si esegue ESATTAMENTE la stessa versione e livello di patch di SQL Server (e/o Finestre). Il formato del file di backup è progettato per essere portatile con versioni incrociate; i file di database binari NON sono. Questo vale per TUTTI i database, non solo per SQL Server. Basta non farlo. VERAMENTE. NON FARLO. –

8

Io uso ExpressMaint.

Per eseguire il backup tutti i database utente che faccio, per esempio:

C:> ExpressMaint.exe -S (locale) \ sqlexpress -D ALL_USER -T DB -BU ORE -BV 1 -B c: \ backupdir \ -DS

+0

Meixger, non riesco a trovare un singolo motivo per usare ExpressMaint, quando SQLBackupAndFTP lo batte in ogni scenario immaginabile –

4

Sto usando tsql su un'infrastruttura Linux/UNIX per accedere ai database MSSQL. Ecco uno script di shell semplice per scaricare una tabella in un file:

#!/usr/bin/ksh 
# 
#..... 
(
tsql -S {database} -U {user} -P {password} <<EOF 
select * from {table} 
go 
quit 
EOF 
) >{output_file.dump} 
5

ho trovato questo in una pagina del supporto Microsoft http://support.microsoft.com/kb/2019698.

Funziona benissimo! E dal momento che proviene da Microsoft, mi sembra abbastanza legittimo.

Fondamentalmente ci sono due passaggi.

  1. Creare una stored procedure nel master db. Vedi il link msft o se è rotto prova qui: http://pastebin.com/svRLkqnq
  2. Pianifica il backup dall'utilità di pianificazione. Potresti voler inserire prima un file .bat o .cmd e poi programmare quel file.

    sqlcmd -S YOUR_SERVER_NAME\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='C:\SQL_Backup\', @backupType='F'" 1>c:\SQL_Backup\backup.log    
    

Ovviamente sostituire Your_Server_Name con il nome del computer o, in alternativa provare. \ SQLEXPRESS e assicurarsi che esista la cartella di backup.In questo caso si sta cercando di metterlo in c: \ sql_backup

+1

Per quello che vale, ho finito per usare il metodo di cui sopra in concerto con le cose da https: //ola.hallengren. com/che penso sia molto rispettato tra la comunità dba. Funziona come un fascino. –

2

eventuale se non si dispone di una connessione di fiducia come l'opzione -E dichiara

Usa seguente riga di comando

"[program dir]\[sql server version]\Tools\Binn\osql.exe" -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak'" -S [server] –U [login id] -P [password]

dove

[dir programma] è la directory in cui è presente l'osql.exe

On 32bit OS c:\Program Files\Microsoft SQL Server\
On 64bit OS c:\Program Files (x86)\Microsoft SQL Server\

[versione del server SQL] la versione di SQL Server 110 o 100 o 90 o 80 iniziano con il maggior numero

[server] il tuo nome server o il server ip

[ID di accesso] tua MS- sql server nome di login utente

[password] la password di login richiesto

+1

'C: \ tmp' è percorso in *** server *** o *** local ***? – Kiquenet

2

di seguito è riportato il semplice script per fare il backup del database.

DECLARE @name VARCHAR(50) -- database name 
DECLARE @path VARCHAR(256) -- path for backup files 
DECLARE @fileName VARCHAR(256) -- filename for backup 
DECLARE @fileDate VARCHAR(20) -- used for file name 


-- specify database backup directory 
SET @path = 'C:\Backup\' 


-- specify filename format 
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 


DECLARE db_cursor CURSOR FOR 
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases 


OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @name 


WHILE @@FETCH_STATUS = 0 
BEGIN 
     SET @fileName = @path + @name + '_' + @fileDate + '.BAK' 
     BACKUP DATABASE @name TO DISK = @fileName 


     FETCH NEXT FROM db_cursor INTO @name 
END 


CLOSE db_cursor 
DEALLOCATE db_cursor 
3

È possibile utilizzare l'applicazione di backup di ApexSQL. Sebbene sia un'applicazione GUI, ha tutte le sue funzionalità supportate nella CLI. È possibile eseguire operazioni di backup una tantum o creare un lavoro che eseguirà regolarmente il backup dei database specificati. È possibile controllare le regole switch e exampled negli articoli:

Problemi correlati