Migrace TempDB na jiný disk

Občas nastane případ, kdy potřebujete migrovat systémové databáze Microsoft SQL Serveru z původního disku na jiný, lépe vyhovující vaším požadavkům. Více místa, rychlejší disk, stabilnější pole atd… Pokud uzrál ten správný čas i na vašem SQL serveru. postupujte následovně.

Prohlédněte si součásti vaší tempdb

–USE TEMPDB
EXEC TEMPDB.dbo.sp_helpfile

Následně všechny součásti migrujte na jiný disk. Pozor pro migraci není nutné fyzicky přemisťovat soubory. Nic důležitého v nich není, takže si je zkrátka SQL server během migrace na novém místě vytvoří zcela znova. Podmínkou úspěené migrace je samozřejmě, to, že nová cesta existuje a uživatel pod kterým běží služba SQL Serveru do ní má odpovídající přístup.

Staré soubory v původním “opuštěném” umístění ručně odstraňte. Pokud tak neučiníte, za půl roku již nebudete vědět, proč tam jsou a zda je SQL server používá či nikoliv. Následně budete vynakládat zbytečné úsilí (čas a peníze) na to aby jste zjistili že je možé je bez poškození smazat :-).

— migrate TEMPDB
USE MASTER
GO

ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPDEV, FILENAME = ‘D:\MSSQL\DATA\tempdb.mdf’)
GO
ALTER DATABASE TEMPDB MODIFY FILE(NAME = TEMPLOG, FILENAME = ‘E:\MSSQL\Data\templog.ldf’)
GO
ALTER DATABASE TEMPDB MODIFY FILE(NAME = TEMPDEV2, FILENAME = ‘F:\MSSQL\DATA\tempdev2.ndf’)
GO

Po migraci restartujte SQL Server. Po restartu smažte staré soubory v původním umístění.

 

Pokud chcete rozdělit TEMPDB na více disků, pak je nejrychlejším řešením dát MDF a LDF jinam. Pokud ani to nestačí, můžete přidat několik dalších datových souborů. Ty mají obvykle příponu NDF

— Add second MDF file
ALTER DATABASE TEMPDB ADD FILE(NAME = TEMPDEV2, FILENAME = ‘F:\MSSQL\DATA\tempdev2.ndf’)
GO

 

Pokud jsou vám soubory na víc přítěží. odstraňte je následujícím způsobem.

— Clear second MDF file
USE TEMPDB
GO

DBCC SHRINKFILE (TEMPDEV2, EMPTYFILE);
GO

–Remove second MDF file
ALTER DATABASE tempdb REMOVE FILE TEMPDEV2
GO

Leave a Reply

Your email address will not be published. Required fields are marked *