Condividi tramite


Spostare i database di sistema

In questo argomento viene descritto come spostare i database di sistema in SQL Server. Lo spostamento dei database di sistema può risultare utile nelle situazioni seguenti:

  • Recupero da errore. Ad esempio, il database è in modalità sospetta oppure viene chiuso a causa di un errore hardware.

  • Rilocazione pianificata.

  • Rilocazione per una manutenzione pianificata del disco.

Le procedure seguenti si applicano allo spostamento di file di database all'interno della stessa istanza di SQL Server. Per spostare un database in un'altra istanza di SQL Server o in un altro server, usare le operazioni di backup e ripristino o scollegamento e collegamento.

Le procedure descritte in questo argomento richiedono il nome logico dei file di database. Per ottenere il nome, eseguire una query sulla colonna name della vista del catalogo sys.master_files .

Importante

Se si sposta un database di sistema e successivamente si ricompila il database master, è necessario spostare nuovamente il database di sistema, in quanto l'operazione di ricompilazione ha come conseguenza l'installazione di tutti i database di sistema nei rispettivi percorsi predefiniti.

Contenuto dell'articolo

Procedura di rilocazione pianificata e manutenzione pianificata del disco

Per spostare un file di dati o di log del database di sistema nell'ambito di un'operazione di rilocazione pianificata o di manutenzione pianificata, attenersi alla procedura seguente. Questa procedura è valida per tutti i database di sistema ad eccezione dei database master e Resource.

  1. Per ogni file che si desidera spostare, eseguire l'istruzione seguente.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    
  2. Arrestare l'istanza di SQL Server o arrestare il sistema per eseguire la manutenzione. Per altre informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare i servizi SQL Server.

  3. Spostare il file o i file nella nuova posizione.

  4. Riavviare l'istanza di SQL Server o del server. Per altre informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare i servizi SQL Server.

  5. Verificare la modifica ai file eseguendo la query riportata di seguito.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Se il database msdb viene spostato e l'istanza di SQL Server è configurata per Posta elettronica database, completare questi passaggi aggiuntivi.

  1. Verificare che Service Broker sia abilitato per il database msdb eseguendo la query seguente.

    SELECT is_broker_enabled   
    FROM sys.databases  
    WHERE name = N'msdb';  
    

    Per altre informazioni sull'abilitazione di Service Broker, vedere ALTER DATABASE (Transact-SQL).

  2. Verificare il funzionamento di Posta elettronica database inviando un messaggio di prova.

Procedura di recupero da errore

Se è necessario spostare un file a causa di un errore hardware, eseguire la procedura seguente per rilocare il file in una nuova posizione. Questa procedura è valida per tutti i database di sistema ad eccezione dei database master e Resource.

Importante

Se non è possibile avviare il database, ovvero se il database è in modalità sospetta o in stato non recuperato, il file può essere spostato solo dai membri del ruolo predefinito sysadmin.

  1. Arrestare l'istanza di SQL Server se viene avviata.

  2. Avviare l'istanza di SQL Server in modalità di ripristino solo master immettendo uno dei comandi seguenti al prompt dei comandi. I parametri specificati in questi comandi fanno distinzione tra maiuscole e minuscole. I comandi hanno esito negativo se i parametri non vengono specificati come illustrato.

    • Per l'istanza predefinita (MSSQLSERVER), eseguire il comando seguente:

      NET START MSSQLSERVER /f /T3608  
      
    • Per un'istanza denominata, eseguire il comando riportato di seguito:

      NET START MSSQL$instancename /f /T3608  
      

    Per altre informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare i servizi SQL Server.

  3. Per ogni file da spostare, usare i comandi sqlcmd o SQL Server Management Studio per eseguire l'istruzione seguente.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    

    Per altre informazioni su come usare l'utilità sqlcmd , vedere Usare l'utilità sqlcmd.

  4. Chiudere l'utilità sqlcmd o SQL Server Management Studio.

  5. Arrestare l'istanza di SQL Server. Eseguire, ad esempio, NET STOP MSSQLSERVER.

  6. Spostare il file o i file nella nuova posizione.

  7. Riavviare l'istanza di SQL Server. Eseguire, ad esempio, NET START MSSQLSERVER.

  8. Verificare la modifica ai file eseguendo la query riportata di seguito.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Spostamento del database master

Per spostare il database master, effettuare le operazioni seguenti.

  1. Fare clic sul menu Start , scegliere Tutti i programmi, Microsoft SQL Server, Strumenti di configurazionee quindi fare clic su Gestione configurazione SQL Server.

  2. Nel nodo SQL Server Services fare clic con il pulsante destro del mouse sull'istanza di SQL Server (ad esempio, SQL Server (MSSQLSERVER)) e scegliere Proprietà.

  3. Nella finestra di dialogo Proprietà SQL Server (instance_name) fare clic sulla scheda Parametri di avvio.

  4. Nella casella Parametri esistenti selezionare il parametro -d per spostare il file di dati master. Per salvare le modifiche, fare clic su Aggiorna .

    Nella casella Specificare un parametro di avvio impostare il parametro sul nuovo percorso del database master.

  5. Nella casella Parametri esistenti selezionare il parametro -l per spostare il file di log master. Per salvare le modifiche, fare clic su Aggiorna .

    Nella casella Specificare un parametro di avvio impostare il parametro sul nuovo percorso del database master.

    Il valore del parametro per il file di dati deve seguire il parametro -d e il valore per il file di log deve seguire il parametro -l . L'esempio seguente illustra i valori dei parametri per il percorso predefinito del file di dati master.

    -dC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

    Se la rilocazione pianificata del file di dati master è E:\SQLData, i valori dei parametri verranno modificati nel modo seguente:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Arrestare l'istanza di SQL Server facendo clic con il pulsante destro del mouse sul nome dell'istanza e scegliendo Arresta.

  7. Spostare i file master.mdf e mastlog.ldf nel nuovo percorso.

  8. Riavviare l'istanza di SQL Server.

  9. Verificare la modifica dei file per il database master eseguendo la query seguente.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID('master');  
    GO  
    

Spostamento del database delle risorse

Il percorso del database delle risorse è <unità>:\Programmi\Microsoft SQL Server\MSSQL<versione>.<Instance_name>\MSSQL\Binn\. Il database non può essere spostato.

Completamento: Dopo lo spostamento di tutti i database di sistema

Se tutti i database di sistema sono stati spostati in un nuovo volume o unità oppure in un altro server con una lettera di unità diversa, effettuare gli aggiornamenti riportati di seguito.

  • Modificare il percorso del log di SQL Server Agent Se non si aggiorna questo percorso, non sarà possibile avviare SQL Server Agent.

  • Modificare il percorso predefinito del database. La creazione di un nuovo database potrebbe non venir completata correttamente se la lettera di unità e il percorso specificati come posizione predefinita non esistono.

Modificare il percorso del log di SQL Server Agent

  1. In Esplora oggetti di SQL Server Management Studio espandere SQL Server Agent.

  2. Fare clic con il pulsante destro del mouse su Log degli errori e scegliere Configura.

  3. Nella finestra di dialogo Configura log degli errori di SQL Server Agent specificare il nuovo percorso del file SQLAGENT.OUT. Il percorso predefinito è C:\Programmi\Microsoft SQL Server\MSSQL12.<>instance_name\MSSQL\Log\.

Modificare il percorso predefinito del database

  1. In Esplora oggetti di SQL Server Management Studio fare clic con il pulsante destro del mouse sul server SQL Server e scegliere Proprietà.

  2. Nella finestra di dialogo Proprietà server selezionare Impostazioni database.

  3. In Percorsi predefiniti databaseselezionare il nuovo percorso sia per i file di dati sia per quelli di log.

  4. Per completare la modifica, avviare e arrestare il servizio SQL Server.

Esempi

R. Spostamento del database tempdb

Nell'esempio seguente i file dei dati e di log del database tempdb vengono spostati in un nuovo percorso nell'ambito di una rilocazione pianificata.

Nota

Poiché tempdb viene ricreato ogni volta che viene avviata l'istanza di SQL Server, non è necessario spostare fisicamente i file di dati e di log. I file vengono creati nella nuova posizione quando il servizio viene riavviato nel passaggio 3. Fino al riavvio del servizio, il database tempdb continuerà a utilizzare i file di dati e di log nella posizione esistente.

  1. Determinare i nomi dei file logici del database tempdb e la relativa posizione corrente sul disco.

    SELECT name, physical_name AS CurrentLocation  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    GO  
    
  2. Modificare il percorso di ogni file tramite ALTER DATABASE.

    USE master;  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');  
    GO  
    
  3. Arrestare e riavviare l'istanza di SQL Server.

  4. Verificare la modifica ai file.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    
  5. Eliminare i file tempdb.mdf e templog.ldf dal percorso originale.

Vedere anche

Database Resource
Database tempdb
Database master
Database msdb
Database model
Spostare database utente
Spostare file del database
Avviare, arrestare, sospendere, riprendere, riavviare il motore di database, SQL Server Agent o SQL Server Browser
ALTER DATABASE (Transact-SQL)
Ricompilare database di sistema