Come pianificare e automatizzare i backup dei database di SQL Server in SQL Server Express

Traduzione articoli Traduzione articoli
Identificativo articolo: 2019698 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sommario

SQL Server Express Edition non offrono un modo per pianificare i processi o piani di manutenzione, in quanto il componente di agente SQL Server non č incluso in queste edizioni. Pertanto, č necessario adottare un approccio diverso per eseguire il backup del database quando si utilizzano queste edizioni.   

Attualmente gli utenti di SQL Server Express possono eseguire il backup i database utilizzando uno dei seguenti metodi:

Utilizzare SQL Server Management Studio Express. Viene installato insieme a SQL Server Express Advanced Service o SQL Server Express Toolkit. Per ulteriori informazioni, vedere il seguente sito Web Microsoft Developer Network (MSDN):

Creare un Backup completo del Database (SQL Server)

  • Utilizzare uno script Transact-SQL che utilizza il DATABASE di BACKUP dei comandi. Per ulteriori informazioni, vedere il seguente sito Web MSDN:

    BACKUP (Transact-SQL)

    In questo articolo viene descritto come utilizzare uno script Transact-SQL con utilitā di pianificazione di Windows per automatizzare i backup dei database di SQL Server Express in modo pianificato.

  • Informazioni

    Č necessario effettuare i tre passaggi per eseguire il backup dei database di SQL Server utilizzando l'utilitā di pianificazione di Windows:

    Passaggio A: utilizzare SQL Server Management Studio Express o Sqlcmd per creare la seguente stored procedure nel database master:

    Copyright Š Microsoft Corporation.  Tutti i diritti riservati.

    Codice rilasciato in virtų del

    / / Microsoft Public License (MS-PL http://opensource.org/licenses/ms-pl.html.)

    Uso [master]
    GO 
    / * * * Oggetto: StoredProcedure [dbo].[sp_BackupDatabases] * * * /
    SET ANSI_NULLS ON
    Vai
    SET QUOTED_IDENTIFIER ON
    Vai
    -===
    -autore: Microsoft
    -Data creazione: 2010-02-06
    -Descrizione: Backup database per SQL Express
    -parametro1: databaseName
    -parametro2: backupType, F = completo, D = differenziale, L = log
    -parametro3: percorso del file di backup
    -===
    procedura creare [dbo]. [sp_BackupDatabases]
    @databaseName sysname = null,
    @backupType char (1),
    @backupLocation nvarchar(200)
    AS
    SET NOCOUNT ON; 
               
                DECLARE @DBs TABLE
                (
                      ID int IDENTITY PRIMARY KEY,
                      DBNAME nvarchar(500)
                )
               
                 -- Pick out only databases which are online in case ALL databases are chosen to be backed up
                 -- If specific database is chosen to be backed up only pick that out from @DBs
                INSERT INTO @DBs (DBNAME)
                SELECT Name FROM master.sys.databases
                where state=0
                AND name=@DatabaseName
                OR @DatabaseName IS NULL
                ORDER BY Name
               
                -- Filter out databases which do not need to backed up
                IF @backupType='F'
                      BEGIN
                      @DBs Elimina dove DBNAME IN ("tempdb", "Northwind", "pubs", "AdventureWorks")
    fine
    ELSE IF @backupType = aveva '
    iniziare
    @DBs Elimina dove DBNAME IN ("tempdb", "Northwind", "pubs", 'master', 'AdventureWorks')
    fine
    ELSE IF @backupType = 'G'
    iniziare
    @DBs Elimina dove DBNAME IN ("tempdb", "Northwind", "pubs", 'master', 'AdventureWorks')
    fine
    ELSE
    iniziare
    restituire
    fine
    -dichiarare le variabili
    DECLARE @BackupName varchar(100)
    DECLARE @BackupFile varchar(100)
    DECLARE @DBNAME varchar(300)
    @sqlCommand DECLARE tipo
    DECLARE @dateTime NVARCHAR(20)
    @ ciclo dichiarare int
    -Loop sui database uno
    @ ciclo selezionare = min(ID) FROM @DBs
    durante @Loop IS NOT NULL
    iniziare
    - i nomi dei Database devono essere in formato [dbname] poiché alcuni hanno - o _ nel nome
          SET @DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +']'
    - impostare il formato di data e ora yyyyhhmmss n corrente
    SET @dateTime = RIMPIAZZA (CONVERTIRE (VARCHAR, GETDATE(),101),'/','') + '_' + sostituire (CONVERTIRE (VARCHAR, GETDATE(),108),':','')
    - creazione del nome file di backup in formato path\filename.extension per il backup dei log, diff e full
    se @backupType = 'F'
    SET @BackupFile = @backupLocation + sostituire (sostituire (@DBNAME, ' [', '),'] ', ') + '_FULL_' + @dateTime+ '.BAK'
    @backupType ELSE IF = era '
    SET @BackupFile = @backupLocation + sostituire (sostituire (@DBNAME, ' [', '),'] ', ') + '_DIFF_' + @dateTime+ '.BAK'
    ELSE IF @backupType = 'G'
    SET @BackupFile = @backupLocation + sostituire (sostituire (@DBNAME, ' [', '),'] ', ') + '_LOG_' + @dateTime+ '.TRN'
     
    -- Provide the backup a name for storing in the media
          IF @backupType = 'F'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime
          IF @backupType = 'D'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime
          IF @backupType = 'L'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime
     
    -- Generate the dynamic SQL command to be executed
     
           IF @backupType = 'F' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                      END
           IF @backupType = 'D'
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
           IF @backupType = 'L' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
     
    -- Execute the generated SQL command
           EXEC(@sqlCommand)
     
    -- Goto the next database
    SELECT @Loop = min(ID) FROM @DBs where ID > @Loop
    fine

    Passaggio B: In un editor di testo, creare un file batch denominato Sqlbackup.bat e quindi copiare il testo da uno dei seguenti esempi in tale file, a seconda dello scenario:

    Esempio1:Backup completi di tutti i database nell'istanza locale denominata di SQL Express utilizzando l'autenticazione di Windows

    SQLBackup.bat

    sqlcmd -S. \EXPRESS-E -Q "EXEC sp_BackupDatabases @backupLocation = aveva: \SQLBackups\', @backupType = 'F'" 

    Example2: i backup differenziali di tutti i database nell'istanza locale denominata di SQL Express utilizzando un SQLLogin e la relativa password

    SQLBackup.bat

    SQLCMD - U SQLLogin -P password -S. \SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation = 'D:\SQLBackups', @BackupType = era '"

    Nota: il SQLLogin shouldhave in almeno il ruolo di operatore di Backup in SQL Server.


    Esempio 3:Backup del log di tutti i database in locale istanza denominata di SQL Express utilizzando l'autenticazione di Windows

    SQLBackup.bat

    SQLCMD -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = aveva: \SQLBackups\', @backupType ="L "

    Esempio 4:Backup completi del database USERDB nell'istanza locale denominata di SQL Express utilizzando l'autenticazione di Windows

    SQLBackup.bat

    SQLCMD -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = aveva: \SQLBackups\', @databaseName = 'USERDB' @backupType = 'F'"

    Analogamente, č possibile rendere un differenziale backup di USERDB incollando in sarebbe ' per il parametro @backupType e un backup del log di USERDB incollando "L" per il parametro @backupType .

    Passaggio c:Pianificazione di un processo utilizzando l'utilitā di pianificazione di Windows per eseguire il file batch creato nel passaggio B. A tale scopo, attenersi alla seguente procedura:

    1. Nel computer che esegue SQL Server Express, fare clic su Start, scegliere Tutti i programmi, Accessori, Utilitādi sistema e quindi fare clic su operazioni pianificate. 
    2. Fare doppio clic su Aggiungi operazione pianificata. 
    3. Nella pianificazione guidata operazioni, fare clic su Avanti. 
    4. fare clic su Sfoglia, selezionare il file batch creato nel passaggio B e quindi fare clic su Apri. 
    5. Digitare SQLBACKUP per il nome dell'attivitā, fare clic su ogni giornoe quindi fare clic su Avanti. 
    6. Specificare le informazioni per una pianificazione eseguire l'attivitā. (Č consigliabile eseguire questa attivitā almeno una volta al giorno). Quindi, fare clic su Avanti.
    7. Nel campo Immettere il nome utente , digitare un nome utente e quindi digitare una password nel campo Immettere la password .

      Nota. Questo utente deve essere assegnato almeno il ruolo di BackupOperator a livello di SQL Server se si utilizza uno dei file batch nell'esempio 1, 3 o 4.
    8. Fare clic su Avantie quindi fare clic su Fine. 
    9. Eseguire l'operazione pianificata almeno una volta per assicurarsi che il backup sia stato creato correttamente.

      Nota.La cartella dell'eseguibile SQLCMD č in genere nelle variabili di percorso per il server dopo l'installazione di SQL Server, ma se la variabile Path non č elencato in questa cartella, č possibile trovare in < percorso di installazione > \90\Tools\Binn (ad esempio: C:\Program Files\Microsoft SQL Server\90\Tools\Binn).

      Tenere presente quanto segue quando si utilizza la procedura descritta in questo articolo:

      • Il servizio Utilitā di pianificazione di Windows deve essere in esecuzione nel momento in cui č programmata l'esecuzione. Si consiglia di impostare il tipo di avvio per il servizio come automatico. Ciō garantisce che il servizio verrā eseguito anche su un riavvio.
      • Vi deve essere di grandi quantitā di spazio sull'unitā in cui vengono salvati i backup. Č consigliabile che pulire i vecchi file nella cartella di backup regolarmente per assicurarsi di non eseguire spazio su disco insufficiente. Lo script non contiene la logica per pulire i file precedenti.

      Ulteriori riferimenti

    Proprietā

    Identificativo articolo: 2019698 - Ultima modifica: lunedė 23 giugno 2014 - Revisione: 2.0
    Le informazioni in questo articolo si applicano a:
    • Microsoft SQL Server 2014 Express
    • Microsoft SQL Server 2012 Express
    • Microsoft SQL Server 2008 Express
    • Microsoft SQL Server 2008 Express with Advanced Services
    • Microsoft SQL Server 2005 Express Edition
    • Microsoft SQL Server 2005 Express Edition with Advanced Services
    Chiavi: 
    kbmt KB2019698 KbMtit
    Traduzione automatica articoli
    IMPORTANTE: il presente articolo č stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l?obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre č perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilitā per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualitā della traduzione.
    Clicca qui per visualizzare la versione originale in inglese dell?articolo: 2019698
    LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

    Invia suggerimenti

     

    Contact us for more help

    Contact us for more help
    Connect with Answer Desk for expert help.
    Get more support from smallbusiness.support.microsoft.com