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

Traduzione articoli Traduzione articoli
Identificativo articolo: 2019698
Espandi tutto | Chiudi tutto

Sommario

SQL Server Express editions non offrono un modo per pianificare i processi o piani di manutenzione poiché il componente Agente di SQL Server non è incluso in queste edizioni. Pertanto, è necessario adottare un approccio diverso per eseguire il backup dei database quando si utilizzano queste versioni.   

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

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

Creare un Backup completo del Database (SQL Server)

  • Utilizzare uno script Transact-SQL che utilizza i prodotti della famiglia BACKUP DATABASE di comandi. Per ulteriori informazioni, visitare 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 SQL Server Express su base pianificata.

  • Informazioni

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

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

    / / Copyright © Microsoft Corporation.  Tutti i diritti riservati.

    / / Questo 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
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -=============================================
    -autore: Microsoft
    -Data creazione: 2010-02-06
    -Descrizione: Backup database per SQL Express
    -parametro1: databaseName
    -parametro2: TipoBackup F = completo, D = differenziale, L = log
    -parametro3: percorso del file di backup
    -=============================================
    CREATE PROCEDURE [dbo]. [sp_BackupDatabases]
    @ sysname databaseName = null,
    @ TipoBackup char (1),
    @ PosizioneBackup 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
                      Elimina @ DBs dove DBNAME IN ("tempdb", "Northwind", "pubs", "AdventureWorks")
    fine
    ELSE IF @ TipoBackup = aveva '
    iniziare
    Elimina @ DBs dove IN DBNAME ("tempdb", "Northwind", "pubs", 'master', 'AdventureWorks')
    fine
    ELSE IF @ TipoBackup = "L"
    iniziare
    Elimina @ DBs dove IN DBNAME ("tempdb", "Northwind", "pubs", 'master', 'AdventureWorks')
    fine
    ELSE
    iniziare
    restituire
    fine
    -dichiarare le variabili
    varchar(100) @ NomeBackup dichiarare
    varchar(100) @ BackupFile dichiarare
    varchar(300) @ DBNAME dichiarare
    DECLARE @ sqlCommand nvarchar
    DECLARE @ dateTime NVARCHAR(20)
    @ Loop dichiarare int
    -ciclo tra i database uno
    selezionare @ Loop = min(ID) FROM @ DBs
    WHILE @ Loop IS NOT NULL
    iniziare
    - i nomi dei Database devono essere in formato [dbname] poiché alcuni hanno - o _ nel nome
          Impostare @ DBNAME = '["+(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +']'
    - impostare il formato di yyyyhhmmss n data e ora corrente
    SET @ dateTime = RIMPIAZZA (Converti (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 @ TipoBackup = 'F'
    SET @ BackupFile = @ PosizioneBackup + Sostituisci (sostituire (@ DBNAME, ' [', '),'] ', ') + '_FULL_' + @ dateTime + '.BAK'
    ELSE IF @ TipoBackup = aveva '
    SET @ BackupFile = @ PosizioneBackup + Sostituisci (sostituire (@ DBNAME, ' [', '),'] ', ') + '_DIFF_' + @ dateTime + '.BAK'
    ELSE IF @ TipoBackup = "L"
    SET @ BackupFile = @ PosizioneBackup + Sostituisci (sostituire (@ DBNAME, ' [', '),'] ', ') + '_LOG_' + @ dateTime + '.TRN'
    - il backup di fornire un nome per la memorizzazione dei file multimediali
    se @ TipoBackup = 'F'
    SET @ NomeBackup = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' backup completo per ' + @ dateTime
    se @ TipoBackup = aveva '
    SET @ NomeBackup = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' backup differenziale per ' + @ dateTime
    se @ TipoBackup = "L"
    SET @ NomeBackup = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' backup del log per ' + @ dateTime
    - Genera il comando SQL dinamico da eseguire
    se @ TipoBackup = 'F'
    iniziare
    SET @ sqlCommand = 'DATABASE BACKUP' +@DBNAME+ ' su disco = ' ' +@BackupFile+ ' ' con 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
    END

    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 dei casi:

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

    / / Sqlbackup.bat

    -S sqlcmd. ? e \EXPRESS -Q "EXEC sp_BackupDatabases @ PosizioneBackup = aveva: \SQLBackups\', @ TipoBackup = 'F'" 

    Esempio2: 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 @ PosizioneBackup = 'D:\SQLBackups', @ TipoBackup = era '"

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


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

    / / Sqlbackup.bat

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

    Esempio 4:Backup completo 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 @ PosizioneBackup = aveva: \SQLBackups\', @ databaseName = 'USERDB', @ TipoBackup = 'F'"

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

    Fase c:Pianificazione di un processo utilizzando l'utilità di pianificazione di Windows per eseguire il file batch creato nel passaggio B. Per effettuare questa operazione, attenersi alla seguente procedura:

    1. Sul 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 sul 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 il nome dell'attività SQLBACKUP , selezionare giornalieroe quindi fare clic su Avanti. 
    6. Specificare le informazioni per una pianificazione per eseguire l'attività. (È consigliabile eseguire questa operazione 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 almeno essere assegnato 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 è stato creato correttamente.

      NotaNella cartella dell'eseguibile SQLCMD è in genere le variabili di percorso per il server dopo SQL Server viene installato, 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).

      Essere a conoscenza dei seguenti quando si utilizza la procedura è documentata in questo articolo:

      • 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. Questo assicura 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. Si consiglia di pulizia i vecchi file nella cartella di backup regolarmente per assicurarsi che non si esegue spazio su disco insufficiente. Lo script non contiene la logica di pulire i file vecchi.

      Ulteriori riferimenti

    Proprietà

    Identificativo articolo: 2019698 - Ultima modifica: giovedì 28 giugno 2012 - Revisione: 1.0
    Chiavi: 
    kbmt KB2019698 KbMtit
    Traduzione automatica articoli
    Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
    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