Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

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
Sommario

SQL Server Express Edition non consentono di pianificare 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 dei 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 servizio avanzata 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 la famiglia di 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 in base a una pianificazione.

  • 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 base ai termini 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 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 in DBNAME IN ("tempdb", "Northwind", "pubs", "AdventureWorks")
    fine
    ELSE IF @backupType = era '
    iniziare
    @DBs Elimina in DBNAME IN ("tempdb", "Northwind", "pubs", 'master', 'AdventureWorks')
    fine
    ELSE IF @backupType = "L"
    iniziare
    @DBs Elimina in 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)
    DECLARE @sqlCommand NVARCHAR(1000)
    DECLARE @dateTime NVARCHAR(20)
    @ ciclo dichiarare int
    -ciclo uno dei database
    @ ciclo selezionare = min(ID) da @DBs
    durante @Loop IS NULL non
    iniziare
    - i nomi dei Database devono essere nel formato [dbname] poiché alcuni - o _ nel nome
         SET @DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) '']'
    - impostare il formato corrente di data e ora yyyyhhmmss n
    SET @dateTime = Sostituisci (CONVERTIRE (VARCHAR, GETDATE(),101),'/','') + '_' +sostituire (CONVERTIRE (VARCHAR, GETDATE(),108),':','')
    - nome file di backup in formato path\filename.extension per il backup completo, diff e log di creazione
    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 = "L"
    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 di SQLEXPRESS utilizzando l'autenticazione di Windows locale denominato

    SQLBackup.bat

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

    Example2:differenziali ditutti i database nell'istanza di SQLEXPRESS utilizzando un SQLLogin e la relativa password locale denominato

    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 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 completo del database USERDB nel locale un'istanza 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 .

    Fase 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 suStart, scegliere tutti iProgrammi,Accessori,Utilitàdi sistema e quindi fare clic suoperazioni pianificate. 
    2. Fare doppio clic suAggiungi operazione pianificata.  
    3. Nella pianificazione guidata operazioni, fare clic suAvanti.  
    4. fare clic su Sfoglia, selezionare il file batch creato nel passaggio B e quindi fare clic suApri.  
    5. Digitare ilSQLBACKUP per il nome dell'attività, fare clic su ogni giornoe quindi fare clic suAvanti.  
    6. Specificare le informazioni per una pianificazione eseguire l'attività. (È consigliabile eseguire questa attività almeno una volta al giorno). Quindi, fare clic suAvanti.
    7. Nel campoImmettere il nome utente , digitare un nome utente e quindi digitare una password nel campoImmettere la password .

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

      NotaLa 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 è presente 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:

      • Deve essere in esecuzione il servizio Utilità di pianificazione di Windows l'ora in cui è stato pianificato per 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 per verificare che non si esegue spazio su disco insufficiente. Lo script non contengono la logica per pulire i file obsoleti.

      Ulteriori riferimenti

    Avviso: questo articolo è stato tradotto automaticamente

    Proprietà

    ID articolo: 2019698 - Ultima revisione: 09/05/2015 07:19:00 - Revisione: 3.0

    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

    • kbmt KB2019698 KbMtit
    Feedback