MS-SQL - spostare il database TempDB in altra cartella
In un'installazione MS SQL Server può divenire necessario spostare i database di sistema come il TempDB.
Ho purtroppo un rapporto di odio con la gestione di database MS SQL
. Non è il mio mondo, mi piace poco e non ci metto abbastanza la testa. Fatta questa dovuta premessa, mi capita di doverne gestire e di conseguenza sbatterci la testa. La scorsa settimana stavo preparando un’installazione MS SQL Serger
su Azure seguendo le best-practices quando mi accorgo di aver fatto la cazzata. Il TempDB
installato su un disco sbagliato.
A cosa serve il tempdb?
In MS SQL Server il tempdb è un database di sistema le cui funzioni principali sono la memorizzazione di tabelle temporanee, cursori, procedure memorizzate e altri oggetti interni creati dal motore del database. Cit.: Wikipedia
Come spostare il tempdb
Purtroppo rispetto ai database tradizionali non è possibile spostarlo facendo la procedura di detach-attach. Bisogna seguire una procedura diversa ma non troppo complicata che riporto sotto:
- Identificare la posizione del file dati e del file di log del TempDB
- Modificare la loro posizione
- Arrestare e riavviare il servizio SQL Server
- Verificare che tutto sia stato spostato correttamente
- Eliminare i vecchi file tempdb.mdf e templog.ldf
Verificare la posizione dei file del tempdb
Verificare la posizione dei file “tempdb.mdf” e “tempdb.ldf” con una query:
1
2
3
4
5
6
7
8
9
USE master;
GO
SELECT name AS [LogicalName]
,physical_name AS [Location]
,state_desc AS [Status]
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO
Il risultato sarà simile a quello dell’immagine
Posizione di partenza del TempoDB
Spostare il TempDB
Spostare il tempdb eseguendo la seconda query (modificando il percorso dei file “tempdb.mdf” e “tempdb.ldf”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
USE master;
GO
ALTER DATABASE tempdb MODIFY FILE (
NAME = tempdev
,FILENAME = 'path di destizione\tempdb.mdf'
);
GO
ALTER DATABASE tempdb MODIFY FILE (
NAME = templog
,FILENAME = 'path di destizione\templog.ldf'
);
GO
Riavvio dei servizi
Riavviare i servizi di MS SQL Server
1
2
net stop MSSQL$nome_istanza
net start MSSQL$nome_istanza
Controllo ed eliminazione dei vecchi file
A questo punto meglo rieseguire la prima query e verificare che il tempdb sia stato spostato correttamente nella cartella di destinazione. Se tutto è corretto si possono cancellare i file “tempdb.mdf” e “tempdb.ldf” nella cartella di origine.