+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: Backup database da script

  1. #1
    bob3m non è in linea Scolaretto
    Luogo
    Gorizia
    Post
    109

    Backup database da script

    Ciao a tutti,
    premetto che sono agli inizi con SQL...
    Uso SQL Express 2008 come db e per creare backup giornalieri ho un file .bat schedulato da win che mi lancia questo script:
    codice:
    BACKUP DATABASE @DBNAME TO DISK = @DIRECTORY , NAME = @Description, NOSKIP , DESCRIPTION = @Description, NOFORMAT WITH INIT
    backup database MioDatabase to disk='e:\backup\MioBackup' WITH INIT
    go
    Con questo script mi crea il file "MioBackup", ma provando un ripristino con SSMS non me lo fa con quel file.
    Googlando ho letto che se si crea un backup con script, lo si può ripristinare solo tramite script.
    Faccio 3 domande
    1) E' corretto quanto ho trovato su google?
    2) Lo script sopra riportato (non l'ho scritto io) mi crea realmente un backup completo del database?
    3) Per creare uno script di ripristino?

    Grazie
    Massimo

  2. #2
    Luogo
    Lazio
    Post
    1,702
    Blogs
    21
    Quote Originariamente inviato da bob3m Visualizza il messaggio
    Ciao a tutti,
    ...
    Googlando ho letto che se si crea un backup con script, lo si può ripristinare solo tramite script.
    Non mi risulta ... e non mi sembra neanche che possa avere una qualche logica

    invece di usare google, ti consiglio di documentarti sui BOL (la guida ufficiale di sql server)

    HTH
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  3. #3
    bob3m non è in linea Scolaretto
    Luogo
    Gorizia
    Post
    109
    Grazie per la risposta.
    Eppure se creo il backup con SSMS, e lo ripristino sempre con SSMS non ho nessun problema.
    Se con SSMS cerco di ripristinare dal file backup creato con lo script non me lo lascia fare.
    Per questo ho iniziato a cercare in rete e ho trovato quell'informazione (che ora non la trovo neanche morto). Non vorrei dire sciocchezze, ma mi pare di ricordare che era su un sito microsoft.
    I file di backup sia quello creato da SSMS sia quello creato dallo script hanno la stessa dimensione.
    Posso chiederti se sapresti rispondere alle altre due domande?
    Grazie
    Massimo

  4. #4
    L'avatar di nman
    nman non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,666
    Quote Originariamente inviato da bob3m Visualizza il messaggio
    BACKUP DATABASE @DBNAME TO DISK = @DIRECTORY , NAME = @Description, NOSKIP , DESCRIPTION = @Description, NOFORMAT WITH INIT
    backup database MioDatabase to disk='e:\backup\MioBackup' WITH INIT
    go
    Quello script è strano, sembrano 2 BakUp distinti ma se dici che funziona ci credo,
    ho pero la sensazione che la 1° riga vada in errore "silenzioso" mentre la 2° ti produce il tuo file senza estensione

    Googlando ho letto che se si crea un backup con script, lo si può ripristinare solo tramite script.
    1) E' corretto quanto ho trovato su google?
    assolutamente falso, prepara un BackUp con SSMS e al posto di premere l'ultimo pulsante di esecuzione
    premi invece in alto a Sx il pulsante "Script" vedrai che tutte le impostazioni che hai preparato con SSMS
    verranno tradotte nel corrispettivo Script
    Significa che SSMS non fa altro che confezionarti "gentilmente" lo script e poi lo lancia
    Tutto il funzionamento di SQLServer avviene tramite Script

    2) Lo script sopra riportato (non l'ho scritto io) mi crea realmente un backup completo del database?
    Ti ho detto sopra che mi sembra che solamente la 2° riga sia efficace,
    ma comunque concordo con sspintux
    eviterei quello script perché è molto incasinato
    costruisciti i tuoi script come ti ho detto sopra o meglio seguendo la guida di SQLServer

    3) Per creare uno script di ripristino?
    stessa risposta


    ho un file .bat schedulato da win che mi lancia questo script:
    Perché non ti fai un file .bat che contiene in se stesso lo script devi solo dargli le credenziali
    ad esempio per fare un BakUp
    codice:
    SQLCMD -U sa -P xyz -S Server12 -Q "BACKUP DATABASE [NomeDB] TO DISK = N'C:\Per\NoFi.bak' WITH INIT, NAME = N'NomDes',   STATS = 10"
    pause
    per il ripristino ( che ti auguro di non dover mai usare )
    codice:
    SQLCMD -U sa -P xyz -S Server12 -Q "RESTORE DATABASE [NomeDB] FROM  DISK = N'C:\Per\NoFi.bak' WITH  FILE = 1,  NOUNLOAD,  STATS = 10"
    pause
    Dove:
    > sa -> è l'onnipotente superamministratore di SQLServer
    > xyz -> è la password di sa
    > Server12 -> è il nome del Server
    > NomeDB -> è appunto il nome del DataBase
    > C:\Per\NoFi.bak -> è il percorso completo di NomeFile in cui verra creato il BakUp
    --- attento il percorso deve essere accessibile a SQLServer
    --- aggiungo che negli esempi Microsoft a volte il percorso è riportato senza estensione ( .bak ) - Io pero la metto sempre
    > NomDes -> è una descrizione/proprieta ( inutile) che serve forse agli amministratori che gestiscono molti BakUp
    > STATS = 10 -> è una specie di frazionamento del report che viene prodotto da SQLServer ( puoi fare anche 20, 30, 50 quello che vuoi )
    > pause -> ti serve solo per i test, in modo che "leggi" il report del file .bat chiaramente dopo lo cancelli

    i 2 script sopra li ho appena testati ( SQLServer 2008 R2 ) a me funzionano


    Facci sapere

    .
    Ultima modifica di nman; 18-09-2014 21:43 

  5. #5
    bob3m non è in linea Scolaretto
    Luogo
    Gorizia
    Post
    109
    Ciao nman,
    rispondo solo oggi perchè il pc (server) interessato è in azienda, ma le prove le faccio sul mio a casa.
    In effetti il backup creato con lo script da me riportato, con SSMS non riuscio a ripristinare... mi dava errore.
    Grazie per avermi detto che si può creare lo script da SSMS tramite il pulsante in alto (non lo sapevo, sono alle prime armi).
    Però ho utilizzato lo script che mi hai passato, e grazie alla pazienza che hai avuto ad elencarmi con precisione e chiarezza ogni 'voce', l'ho scritto a mano. Il backup generato da tale script, riesco a ripristinare il DB con SSMS senza problemi.
    Poi dietro tuo prezioso consiglio, ho creato tutto dal file .bat e schedulato da win per avere backup giornalieri, in più ho aggiunto l'elimina file se esiste.
    Ho scritto così (ho cambiato i nomi del db, pass e user):
    codice:
    @ECHO OFF
    CLS
    REM *** SCRIPT PER BACKUP DATABASE GESTIONALE  - SCRITTO IL 19.09.2014 ***
    REM -----------------------------------------------------------------------------------------------------------------------------
    REM *** Se presente cancella backup precedente ***
    if exist e:\backup\MioDB del e:\backup\MioDB.bak
    REM -----------------------------------------------------------------------------------------------------------------------------
    REM *** Creo il backup del database MioDB e salvo in E:\backup\ ***
    SQLCMD -S MioServer\sqlexpress -U MiaUser -P MiaPass -Q "BACKUP DATABASE MioDB TO DISK = N'E:\backup\MioDB.bak' WITH INIT"
    REM -----------------------------------------------------------------------------------------------------------------------------
    exit
    Ti ringrazio tantissimo, le tue info sono state preziose.
    Ciao
    Massimo

  6. #6
    Luogo
    Lazio
    Post
    1,702
    Blogs
    21
    Ciao,
    se posso permettermi qualche osservazione:

    1) è ovvio che tenere backup e database sullo stesso disco non è una buona idea
    così come cancellare il vecchio backup prima di aver eseguito il nuovo (legge di Murphy)
    ... ma a questo suppongo tu abbia già pensato

    2) usa l'autenticazione integrata di windows per eseguire lo script di backup,
    così eviti di inserire username e password nel batch

    HTH
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  7. #7
    L'avatar di +m+
    +m+
    +m+ non è in linea Scribacchino
    Post
    922
    Aggiungo: non buttare via le copie vecchie.
    MSSQL ha un sistema idiota per i backup (e lo dico a ragion veduta, niente flame please), quindi può capitare che il file venga modificato troppo (cuttone).
    Versione breve: disabilita la compressione (se c'è, in SQL Express ad esempio no), poi usa l'utility ZPAQ per aggiungere sempre le nuove versioni dei backup.
    Se sei fortunato (come detto con MSSQL funziona poco perchè evidentemente in microsoft non sanno come fare i backup e soprattutto i restore...) ti troverai con la "storia" compressa e soprattutto deduplicata dei backup.

    Questa è cosa buona e giusta, sia in sviluppo che in produzione.
    Puoi anche impostare una password (attenzione qui si apre una gigantesca questione riguardo all'utilizzo - o meno - degli IV in ZPAQ ma la faccio breve) che è altra cosa sempre buona e giusta.

    ---
    PS per favore niente flammoni su MSSQL, backup & restore, è oggettivamente (e considerate le mie competenze è una valutazione oggettiva) ........... (è il termine tecnico giusto) in questo ambito, rispetto anche a programmi meno evoluti per certi versi. Uno dei difetti principali di questo (ex) buon prodotto e che qualsiasi dba conosce (purtroppo) anche troppo bene.
    In effetti i 3 grandi difetti sono per ordine di importanza
    - backup e restore ridicoli. incredibilmente in quasi 20 anni di evoluzione non sono riusciti a fare qualcosa che abbia un senso The system administrator restoring a full database backup must be the only person currently using the database to be restored. ma l'apoteosi è For security purposes, we recommend that you do not attach or restore databases from unknown or untrusted sources. Such databases could contain malicious code that might execute unintended Transact-SQL code . Vabbè mi fermo perchè ogni volta che si parla di backup MS mi vien quasi da piangere...
    - inutile gigantismo, addirittura 100x o 1000x rispetto a prodotti sovrapponibili (!!!!!), con strumenti GUI ridicoli (dimensioni di fattore almeno 100x se non 1000x) ed a riga di comando semplicemente inutili.
    - caterve inumane di dipendenze da qualsiasi cosa (librerie, framework, patch, service pack e chi più ne ha ne metta), che lo rendono delicatissimo e pronissimo a qualsiasi se pur minima variazione dell'ambiente in cui gira.
    Basta guardarlo storto e... voilà non funziona più.

    Il riflesso con la domanda del thread è: fai le copie, tienile (ti serviranno), verifica che effettivamente siano ripristinabili.
    Sono tutti elementi non scontati per microsoft
    Ultima modifica di AntonioG; 21-09-2014 10:32  Motivo: No, non è un termine tecnico e non si accetta qui

  8. #8
    Luogo
    Lazio
    Post
    1,702
    Blogs
    21
    ... a proposito dei restore, segnalo questo link che, anche se vecchiotto, potrebbe tornare utile

    Generare script per ricostruire la sequenza di ripristino - SQL Server e dintorni
    Ciao sspintux
    ------------------------------------------------------------

    O Santo Protettore dell'informatico quadratico medio, se puoi allontana da me questo cetriolo amaro!
    Azz! ... questo è un grande porck-around; potremmo addirittura farlo passare per una funzionalità avanzata

  9. #9
    bob3m non è in linea Scolaretto
    Luogo
    Gorizia
    Post
    109
    Ciao sspintux,
    Quote Originariamente inviato da sspintux Visualizza il messaggio
    1) è ovvio che tenere backup e database sullo stesso disco non è una buona idea
    così come cancellare il vecchio backup prima di aver eseguito il nuovo (legge di Murphy)
    ... ma a questo suppongo tu abbia già pensato
    Lo cancello perchè è già stato copiato, ora spiego:
    Il server è in raid 1 ( e già una buona protezione per evitare perdite di ultimi aggiornamenti/inserimenti, il backup mi riporterebbe al giorno prima) e tutte le sere alle 22 subito dopo aver eseguito il backup del DB sql (tramite script precedentemente riportato), viene copiato su un NAS assieme ad altri file di archivio (documenti, file excel, fatture, allegati vari, backup mail, ecc) e il tutto viene conservato per 14 giorni. Poi ad ogni nuovo backup viene cancellato il più vecchio (quattordicesimo).
    2) usa l'autenticazione integrata di windows per eseguire lo script di backup,
    così eviti di inserire username e password nel batch
    A casa dove faccio gli esperimenti (ho una copia identica per prove) eseguo tramite autenticazione windows, ma in azienda preferisco user e password.
    Ciao
    Massimo
    Ultima modifica di bob3m; 21-09-2014 13:22 

  10. #10
    bob3m non è in linea Scolaretto
    Luogo
    Gorizia
    Post
    109
    Ciao +m+,
    grazie per l'intervento, fa sempre piacere leggere le varie opinioni.
    Tutto fa crescere.

    Ciao
    Massimo

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi