Spostare i database di sistemaMove System Databases

In questo argomento si applica a: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento viene descritta la procedura per lo spostamento dei database di sistema in SQL ServerSQL Server.This topic describes how to move system databases in SQL ServerSQL Server. Lo spostamento dei database di sistema può risultare utile nelle situazioni seguenti:Moving system databases may be useful in the following situations:

  • Recupero da errore.Failure recovery. Ad esempio, il database è in modalità sospetta oppure viene chiuso a causa di un errore hardware.For example, the database is in suspect mode or has shut down because of a hardware failure.

  • Rilocazione pianificata.Planned relocation.

  • Rilocazione per una manutenzione pianificata del disco.Relocation for scheduled disk maintenance.

    Le procedure seguenti consentono di spostare i file di database all'interno della stessa istanza di SQL ServerSQL Server.The following procedures apply to moving database files within the same instance of SQL ServerSQL Server. Per spostare un database in un'altra istanza di SQL ServerSQL Server o in un altro server, usare l'operazione di backup e ripristino .To move a database to another instance of SQL ServerSQL Server or to another server, use the backup and restore operation.

    Le procedure descritte in questo argomento richiedono il nome logico dei file di database.The procedures in this topic require the logical name of the database files. Per ottenere il nome, eseguire una query sulla colonna name della vista del catalogo sys.master_files .To obtain the name, query the name column in the sys.master_files catalog view.

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.If you move a system database and later rebuild the master database, you must move the system database again because the rebuild operation installs all system databases to their default location.

Importante

Dopo lo spostamento dei file, l'account del servizio SQL ServerSQL Server deve avere l'autorizzazione per accedere ai file nel nuovo percorso della cartella di file.After moving files, the SQL ServerSQL Server service account must have permission to access the files in new file folder location.

Procedura di rilocazione pianificata e manutenzione pianificata del discoPlanned Relocation and Scheduled Disk Maintenance Procedure

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.To move a system database data or log file as part of a planned relocation or scheduled maintenance operation, follow these steps. Questa procedura è valida per tutti i database di sistema ad eccezione dei database master e Resource.This procedure applies to all system databases except the master and Resource databases.

  1. Per ogni file che si desidera spostare, eseguire l'istruzione seguente.For each file to be moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    
  2. Arrestare l'istanza di SQL ServerSQL Server o arrestare il sistema per eseguire la manutenzione.Stop the instance of SQL ServerSQL Server or shut down the system to perform maintenance. Per altre informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare il motore di database, SQL Server Agent o SQL Server Browser.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. Spostare il file o i file nella nuova posizione.Move the file or files to the new location.

  4. Riavviare l'istanza di SQL ServerSQL Server o il server.Restart the instance of SQL ServerSQL Server or the server. Per altre informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare il motore di database, SQL Server Agent o SQL Server Browser.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  5. Verificare la modifica ai file eseguendo la query riportata di seguito.Verify the file change by running the following query.

    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 ServerSQL Server è configurata per Posta elettronica database, completare i passaggi aggiuntivi seguenti.If the msdb database is moved and the instance of SQL ServerSQL Server is configured for Database Mail, complete these additional steps.

  6. Verificare che Service BrokerService Broker sia abilitato per il database msdb eseguendo la query seguente.Verify that Service BrokerService Broker is enabled for the msdb database by running the following query.

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

    Per altre informazioni su come abilitare Service BrokerService Broker, vedere ALTER DATABASE (Transact-SQL).For more information about enabling Service BrokerService Broker, see ALTER DATABASE (Transact-SQL).

  7. Verificare il funzionamento di Posta elettronica database inviando un messaggio di prova.Verify that Database Mail is working by sending a test mail.

Procedura di recupero da erroreFailure Recovery Procedure

Se è necessario spostare un file a causa di un errore hardware, eseguire la procedura seguente per rilocare il file in una nuova posizione.If a file must be moved because of a hardware failure, follow these steps to relocate the file to a new location. Questa procedura è valida per tutti i database di sistema ad eccezione dei database master e Resource.This procedure applies to all system databases except the master and Resource databases.

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.If the database cannot be started, that is it is in suspect mode or in an unrecovered state, only members of the sysadmin fixed role can move the file.

  1. Arrestare l'istanza di SQL ServerSQL Server , se avviata.Stop the instance of SQL ServerSQL Server if it is started.

  2. Avviare l'istanza di SQL ServerSQL Server in modalità di recupero del solo database master digitando uno dei comandi seguenti al prompt dei comandi.Start the instance of SQL ServerSQL Server in master-only recovery mode by entering one of the following commands at the command prompt. I parametri specificati in questi comandi fanno distinzione tra maiuscole e minuscole.The parameters specified in these commands are case sensitive. I comandi hanno esito negativo se i parametri non vengono specificati come illustrato.The commands fail when the parameters are not specified as shown.

  3. Per ogni file da spostare, usare i comandi sqlcmd oppure SQL Server Management StudioSQL Server Management Studio per eseguire l'istruzione seguente.For each file to be moved, use sqlcmd commands or SQL Server Management StudioSQL Server Management Studio to run the following statement.

    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.For more information about using the sqlcmd utility, see Use the sqlcmd Utility.

  4. Uscire dall'utilità sqlcmd o SQL Server Management StudioSQL Server Management Studio.Exit the sqlcmd utility or SQL Server Management StudioSQL Server Management Studio.

  5. Arrestare l'istanza di SQL ServerSQL Server.Stop the instance of SQL ServerSQL Server. Eseguire, ad esempio, NET STOP MSSQLSERVER.For example, run NET STOP MSSQLSERVER.

  6. Spostare il file o i file nella nuova posizione.Move the file or files to the new location.

  7. Riavviare l'istanza di SQL ServerSQL Server.Restart the instance of SQL ServerSQL Server. Eseguire, ad esempio, NET START MSSQLSERVER.For example, run NET START MSSQLSERVER.

  8. Verificare la modifica ai file eseguendo la query riportata di seguito.Verify the file change by running the following query.

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

Spostamento del database masterMoving the master Database

Per spostare il database master, effettuare le operazioni seguenti.To move the master database, follow these steps.

  1. Fare clic sul menu Start , scegliere Tutti i programmi, Microsoft SQL Server, Strumenti di configurazionee quindi fare clic su Gestione configurazione SQL Server.From the Start menu, point to All Programs, point to Microsoft SQL Server, point to Configuration Tools, and then click SQL Server Configuration Manager.

  2. Nel nodo Servizi di SQL Server fare clic con il pulsante destro del mouse sull'istanza di SQL ServerSQL Server , ad esempio SQL Server (MSSQLSERVER)e scegliere Proprietà.In the SQL Server Services node, right-click the instance of SQL ServerSQL Server (for example, SQL Server (MSSQLSERVER)) and choose Properties.

  3. Nella finestra di dialogo Proprietà (nome_istanza) di SQL Server fare clic sulla scheda Parametri di avvio .In the SQL Server (instance_name) Properties dialog box, click the Startup Parameters tab.

  4. Nella casella Parametri esistenti selezionare il parametro –d per spostare il file di dati master.In the Existing parameters box, select the –d parameter to move the master data file. Per salvare le modifiche, fare clic su Aggiorna .Click Update to save the change.

    Nella casella Specificare un parametro di avvio impostare il parametro sul nuovo percorso del database master.In the Specify a startup parameter box, change the parameter to the new path of the master database.

  5. Nella casella Parametri esistenti selezionare il parametro –l per spostare il file di log master.In the Existing parameters box, select the –l parameter to move the master log file. Per salvare le modifiche, fare clic su Aggiorna .Click Update to save the change.

    Nella casella Specificare un parametro di avvio impostare il parametro sul nuovo percorso del database master.In the Specify a startup parameter box, change the parameter to the new path of the master database.

    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 .The parameter value for the data file must follow the -d parameter and the value for the log file must follow the -l parameter. L'esempio seguente illustra i valori dei parametri per il percorso predefinito del file di dati master.The following example shows the parameter values for the default location of the master data file.

    -dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.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:If the planned relocation for the master data file is E:\SQLData, the parameter values would be changed as follows:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Arrestare l'istanza di SQL ServerSQL Server facendo clic con il pulsante destro del mouse sul nome dell'istanza e scegliendo Arresta.Stop the instance of SQL ServerSQL Server by right-clicking the instance name and choosing Stop.

  7. Spostare i file master.mdf e mastlog.ldf nel nuovo percorso.Move the master.mdf and mastlog.ldf files to the new location.

  8. Riavviare l'istanza di SQL ServerSQL Server.Restart the instance of SQL ServerSQL Server.

  9. Verificare la modifica dei file per il database master eseguendo la query seguente.Verify the file change for the master database by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID('master');  
    GO  
    
  10. A questo punto SQL Server dovrebbe essere eseguito normalmente.At this point SQL Server should run normally. Microsoft consiglia comunque di modificare anche la voce del Registro di sistema in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, dove instance_ID è simile a MSSQL13.MSSQLSERVER.However Microsoft recommends also adjusting the registry entry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, where instance_ID is like MSSQL13.MSSQLSERVER. In tale hive impostare il valore SQLDataRoot sul nuovo percorso.In that hive, change the SQLDataRoot value to the new path. Se non si aggiorna il Registro di sistema, l'applicazione di patch e l'aggiornamento possono avere esito negativo.Failure to update the registry can cause patching and upgrading to fail.

Spostamento del database delle risorseMoving the Resource Database

Il percorso del database delle risorse è <unità>: \Programmi\Microsoft SQL Server\MSSQL<versione>.<nome_istanza>\MSSQL\Binn\.The location of the Resource database is <drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Binn\. Il database non può essere spostato.The database cannot be moved.

Completamento: Dopo lo spostamento di tutti i database di sistemaFollow-up: After Moving All System Databases

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.If you have moved all of the system databases to a new drive or volume or to another server with a different drive letter, make the following updates.

  • Modificare il percorso del log di SQL Server AgentChange the SQL Server Agent log path. Se non si aggiorna questo percorso, non sarà possibile avviare SQL Server Agent.If you do not update this path, SQL Server Agent will fail to start.

  • Modificare il percorso predefinito del database.Change the database default location. 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.Creating a new database may fail if the drive letter and path specified as the default location do not exist.

Modificare il percorso del log di SQL Server AgentChange the SQL Server Agent Log Path

  1. In Esplora oggetti di SQL Server Management Studio espandere SQL Server Agent.From SQL Server Management Studio, in Object Explorer, expand SQL Server Agent.

  2. Fare clic con il pulsante destro del mouse su Log degli errori e scegliere Configura.Right-click Error Logs and click Configure.

  3. Nella finestra di dialogo Configura log degli errori di SQL Server Agent specificare il nuovo percorso del file SQLAGENT.OUT.In the Configure SQL Server Agent Error Logs dialog box, specify the new location of the SQLAGENT.OUT file. Il percorso predefinito è C:\Programmi\Microsoft SQL Server\MSSQL<versione>.<nome_istanza>\MSSQL\Log\.The default location is C:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Log\.

Modificare il percorso predefinito del databaseChange the database default location

  1. In Esplora oggetti di SQL Server Management Studio fare clic con il pulsante destro del mouse sul server SQL Server e scegliere Proprietà.From SQL Server Management Studio, in Object Explorer, right-click the SQL Server server and click Properties.

  2. Nella finestra di dialogo Proprietà server selezionare Impostazioni database.In the Server Properties dialog box, select Database Settings.

  3. In Percorsi predefiniti databaseselezionare il nuovo percorso sia per i file di dati sia per quelli di log.Under Database Default Locations, browse to the new location for both the data and log files.

  4. Per completare la modifica, avviare e arrestare il servizio SQL Server.Stop and start the SQL Server service to complete the change.

EsempiExamples

A.A. Spostamento del database tempdbMoving the tempdb database

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.The following example moves the tempdb data and log files to a new location as part of a planned relocation.

Nota

Poiché tempdb viene ricreato a ogni avvio dell'istanza di SQL ServerSQL Server , non è necessario spostare fisicamente i file di dati e di log.Because tempdb is re-created each time the instance of SQL ServerSQL Server is started, you do not have to physically move the data and log files. I file vengono creati nella nuova posizione quando il servizio viene riavviato nel passaggio 3.The files are created in the new location when the service is restarted in step 3. Fino al riavvio del servizio, il database tempdb continuerà a utilizzare i file di dati e di log nella posizione esistente.Until the service is restarted, tempdb continues to use the data and log files in existing location.

  1. Determinare i nomi dei file logici del database tempdb e la relativa posizione corrente sul disco.Determine the logical file names of the tempdb database and their current location on the disk.

    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.Change the location of each file by using 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 ServerSQL Server.Stop and restart the instance of SQL ServerSQL Server.

  4. Verificare la modifica ai file.Verify the file change.

    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.Delete the tempdb.mdf and templog.ldf files from the original location.

Vedere ancheSee Also

Database Resource Resource Database
Database tempdb tempdb Database
Database master master Database
Database msdb msdb Database
Database model model Database
Spostare database utente Move User Databases
Spostare file del database Move Database Files
Avviare, arrestare, sospendere, riprendere, riavviare il motore di database, SQL Server Agent o SQL Server Browser Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service
ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
Ricompilare database di sistemaRebuild System Databases