Cambiare path file database in Sql Server

Come cambiare path file database in Sql Server 2019

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.

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:

  1. Recuperare i nomi logici attuali dei file di DB
  2. Impostare il database in modalità OFFLINE
  3. Spostare fisicamente i file del DB nella nuova destinazione
  4. Cambiare i percorsi del file con un ALTER DATABASE
  5. 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:

Cambiare path file database in Sql Server - Recupero nomi logici
Cambiare path file database in Sql Server – Recupero nomi logici
  • 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.

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003