In questa guida vediamo come cambiare path file database in Sql Server dall’unità C:\ ad un’altra unità.
A volte potremmo trovarci nella situazione di spostare un database in Sql Server per motivi di performance, spazio o disco danneggiato.
Vi riporterò tutti i passaggi necessari per cambiare path file database tramite SSMS Microsoft SQL Server Management Studio oppure tramite query T-SQL.
Sommario
Fase preliminare
Per cambiare path file database non c’è bisogno di fermare il servizio di SQL Server, è comunque necessario che il DB, di cui si vuole spostare i file logici, non sia in uso (OFFLINE).
Non guasta mai fare un backup del db prima di procedere.
I passaggi da eseguire sono i seguenti:
- Recuperare i nomi logici attuali dei file di DB
- Impostare il database in modalità OFFLINE
- Spostare fisicamente i file del DB nella nuova destinazione
- Cambiare i percorsi del file con un ALTER DATABASE
- Impostare nuovamente il DB ONLINE
Di seguito vediamo passo passo i passaggi da seguire.
Cambiare path file database in Sql Server tramite query T-SQL
Nell’esempio vedremo come spostare i file del DATABASE “AdventureWorks2012“.
Eseguiremo tutte le istruzioni SQL tramite SSMS (SQL Server Management Studio)
- Recuperiamo i nomi logici dei file di DB, e i percorsi attuali in cui risiedono fisicamente, tramite la query seguente:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks2012');
Questo il risultato della query appena eseguita:
- Impostiamo il DB in modalità OFFLINE eseguendo, da SSMS, la seguente query:
ALTER DATABASE AdventureWorks2012 SET OFFLINE WITH ROLLBACK IMMEDIATE;
- Ora spostiamo fisicamente i file di DB, precisamente i file MDF e LDF nella cartella/percorso in cui vogliamo posizionarli. Nel mio caso ho spostato il file di dati (AdventureWorks2012.mdf) nel percorso F:\DATABASE\DATA\ e il file di log (AdventureWorks2012_log.ldf) nel percorso F:\DATABASE\TLOG\
- Cambiamo i riferimenti ai file del DB utilizzando le seguenti istruzioni SQL da SSMS, per tutti i file di DB che abbiamo spostato, impostando:
NAME = ‘Nome DATABASE’
FILENAME = ‘NuovoPercorso\NomeFileLogico’
ALTER DATABASE AdventureWorks2012 MODIFY FILE ( NAME = 'AdventureWorks2012', FILENAME = 'F:\DATABASE\DATA\AdventureWorks2012.mdf' );
ALTER DATABASE AdventureWorks2012 MODIFY FILE ( NAME = 'AdventureWorks2012_log', FILENAME = 'F:\DATABASE\TLOG\AdventureWorks2012_log.ldf' );
- Riportiamo il DB in modalità ONLINE, per renderlo nuovamente utilizzabile, utilizzando l’istruzione SQL
ALTER DATABASE AdventureWorks2012 SET ONLINE;
Per verificare se le modifiche sono andate a buon fine e se il DB è nuovamente ONLINE lanciamo nuovamente la query:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks2012');
in questo modo siamo in grado di cambiare path file database utilizzando linguaggio T-SQL. Per maggiori informazioni sull’argomento a questo link trovare la documentazione Microsoft.
Cambiare path file database in Sql Server tramite SSMS
Per cambiare path file database mediante SSMS è sufficiente seguire i seguenti passaggi:
- cliccate con il tasto destro del mouse sul database AdventureWorks2012 e selezionate nel menu a comparsa la voce Detach.
Il detach è il metodo più veloce per disconnettere il database da SQL Server e rimuoverlo dalla lista dei database gestiti dal server, per cui prima di fare questa operazione se avete interesse a mantenere lo stesso nome attribuito al database prima del detach, vi conviene scriverlo da qualche parte.
- Subito dopo il Detach arrestate il servizio Sql Server Agent cliccandoci sopra con il tasto destro del mouse e selezionate la voce STOP.
- Ora potete andare nel path di SQL Server, nel mio caso in C:\PROGRAM Files\MICROSOFT SQL Server\MSSQL.1\MSSQL\DATA, e prendere i file MDF e LDF (i file LDF sono i cosiddetti file di Log), tagliarli ed incollarli nella nuova unità da voi scelta
- Dopo questa operazione di Taglia/Incolla, fate tasto destro del mouse sulla voce Databases e selezionate Attach. Si aprirà una nuova finestra dove avete la possibilità di inserire il nome di un nuovo database e aggiungere il file MDF selezionandola dalla nuova unità in cui l’avevate precedentemente incollato (al caricamento del file MDF viene aggiunto automaticamente anche il file LDF).
- Ora non vi rimane che Riattivare Sql Server Agent cliccandoci sopra con il tasto destro del mouse e selezionare la voce START.
Conclusione
Abbiamo visto insieme la procedura da seguire per cambiare path file database in Sql Server.