Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo argomento viene descritto come spostare i database di sistema in SQL Server. Lo spostamento dei database di sistema può essere utile nelle situazioni seguenti:
Ripristino non riuscito. Ad esempio, il database è in modalità sospetta o è stato arrestato a causa di un errore hardware.
Rilocazione pianificata.
Rilocazione per la 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 di 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" nella 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 perché l'operazione di ricompilazione installa tutti i database di sistema nel percorso predefinito.
Contenuto dell'articolo
Procedura di rilocazione pianificata e manutenzione pianificata del disco
Completamento: dopo lo spostamento di tutti i database di sistema
Procedura di rilocazione pianificata e manutenzione pianificata del disco
Per spostare un file di log o dati del database di sistema come parte di un'operazione di rilocazione pianificata o manutenzione pianificata, seguire questa procedura. Questa procedura si applica a tutti i database di sistema ad eccezione dei database master e resource.
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' )
Arrestare l'istanza di SQL Server o spegnere il sistema per eseguire la manutenzione. Per ulteriori informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare il Motore di Database, il Servizio Agente di SQL Server o il Servizio Browser di SQL Server.
Spostare il file o i file nella nuova posizione.
Riavviare l'istanza di SQL Server o il server. Per ulteriori informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare il Motore di Database, il Servizio Agente di SQL Server o il Servizio Browser di SQL Server.
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.
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).
Verificare che Posta elettronica database funzioni inviando un messaggio di prova.
Procedura di recupero dai guasti
Se è necessario spostare un file a causa di un errore hardware, seguire questa procedura per rilocare il file in un nuovo percorso. Questa procedura si applica a tutti i database di sistema ad eccezione dei database master e resource.
Importante
Se il database non può essere avviato, è in modalità sospetta o in uno stato non ripristinato, solo i membri del ruolo predefinito sysadmin possono spostare il file.
Arrestare l'istanza di SQL Server se è attiva.
Avviare l'istanza di SQL Server in modalità di ripristino solo del 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 quando 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 seguente:
NET START MSSQL$instancename /f /T3608
Per ulteriori informazioni, vedere Avviare, arrestare, sospendere, riprendere, riavviare il Motore di Database, il Servizio Agente di SQL Server o il Servizio Browser di SQL Server.
Per ogni file da spostare, usare i comandi sqlcmd oppure SQL Server Management Studio per eseguire la seguente istruzione.
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Per altre informazioni sull'uso dell'utilità sqlcmd , vedere Usare l'utilità sqlcmd.
Uscire dall'utilità sqlcmd o da SQL Server Management Studio.
Arrestare l'istanza di SQL Server. Ad esempio, eseguire
NET STOP MSSQLSERVER
.Spostare il file o i file nella nuova posizione.
Riavviare l'istanza di SQL Server. Ad esempio, eseguire
NET START MSSQLSERVER
.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, seguire questa procedura.
Dal menu Start scegliere Tutti i programmi, Microsoft SQL Server, Strumenti di configurazione e quindi Gestione configurazione SQL Server.
Nel nodo Servizi SQL Server fare clic con il pulsante destro del mouse sull'istanza di SQL Server (ad esempio, SQL Server (MSSQLSERVER)) e scegliere Proprietà.
Nella finestra di dialogo Proprietà di SQL Server (instance_name) fare clic sulla scheda Parametri di avvio .
Nella casella Parametri esistenti selezionare il parametro -d per spostare il file di dati master. Fare clic su Aggiorna per salvare la modifica.
Nella casella Specificare un parametro di avvio modificare il parametro impostando il nuovo percorso del database master.
Nella casella Parametri esistenti selezionare il parametro -l per spostare il file di log master. Fare clic su Aggiorna per salvare la modifica.
Nella casella Specificare un parametro di avvio modificare il parametro impostando il nuovo percorso del database master.
Il valore del parametro per il file di dati deve seguire il
-d
parametro e il valore per il file di log deve seguire il-l
parametro . Nell'esempio seguente vengono illustrati 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 per il file di dati master è
E:\SQLData
, i valori dei parametri verranno modificati nel modo seguente:-dE:\SQLData\master.mdf
-lE:\SQLData\mastlog.ldf
Arrestare l'istanza di SQL Server facendo clic con il pulsante destro del mouse sul nome dell'istanza e scegliendo Arresta.
Spostare i file master.mdf e mastlog.ldf nel nuovo percorso.
Riavviare l'istanza di SQL Server.
Controlla la modifica del file per il database master eseguendo la seguente query.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master'); GO
Spostamento del database di risorse
Il percorso del database delle risorse è <unità>:\Program Files\Microsoft SQL Server\MSSQL<versione>.<instance_name>\MSSQL\Binn\. Impossibile spostare il database.
Completamento: dopo lo spostamento di tutti i database di sistema
Se tutti i database di sistema sono stati spostati in una nuova unità o volume o in un altro server con una lettera di unità diversa, apportare gli aggiornamenti seguenti.
Modificare il percorso del log di SQL Server Agent. Se non si aggiorna questo percorso, SQL Server Agent non verrà avviato.
Modificare il percorso predefinito del database. La creazione di un nuovo database potrebbe fallire se la lettera di unità e il percorso specificati come posizione predefinita non esistono.
Modificare il percorso del log di SQL Server Agent
In Esplora oggetti di SQL Server Management Studio, espandere SQL Server Agent.
Fare clic con il pulsante destro del mouse su Log degli errori e scegliere Configura.
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
In Esplora oggetti di SQL Server Management Studio fare clic con il pulsante destro del mouse sul server SQL Server e scegliere Proprietà.
Nella finestra di dialogo Proprietà server selezionare Impostazioni database.
In Percorsi predefiniti del database passare al nuovo percorso sia per i file di dati che per i file di log.
Interrompere e avviare il servizio SQL Server per applicare le modifiche.
Esempi
Un. Spostamento del database tempdb
Nell'esempio seguente i tempdb
file di dati e di log vengono spostati in una nuova posizione come parte di una rilocazione pianificata.
Annotazioni
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 nel nuovo percorso quando il servizio viene riavviato nel passaggio 3. Fino al riavvio del servizio, tempdb continua a usare i file di dati e log nella posizione esistente.
Determinare i nomi di file logici del
tempdb
database e il relativo percorso corrente sul disco.SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GO
Modificare il percorso di ogni file usando
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
Arrestare e riavviare l'istanza di SQL Server.
Verificare la modifica del file.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Eliminare i
tempdb.mdf
file etemplog.ldf
dal percorso originale.
Vedere anche
Database delle risorse
Database tempdb
Database master
Database msdb
modello di database
Spostare database utente
Spostare file del database
Avviare, arrestare, sospendere, riprendere, riavviare il motore di database, l'agente di SQL Server o il servizio SQL Server Browser
ALTER DATABASE (Transact-SQL)
Ricompilare database di sistema