Zmiana tempdb do nowej lokalizacji

Przeniesienie bazy tempdb do nowej lokalizacji:

1) Wykonujemy zapytanie, które przygotuje nam SQL do zmiany lokalizacji tempdb

DECLARE @new_path NVARCHAR(4000) = N'T:\New_File_Path\';
 
SELECT
      N'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name]) + N', '
    + N'FILENAME = ''' + @new_path + RIGHT(physical_name, CHARINDEX('\', REVERSE(physical_name)) -1)
    + ''');'
    AS [AlterCommand]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb');

 Wynik:

ALTER DATABASE tempdb MODIFY FILE (NAME = [tempdev], FILENAME = 'T:\New_File_Path\tempdb.mdf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [templog], FILENAME = 'T:\New_File_Path\templog.ldf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp2], FILENAME = 'T:\New_File_Path\tempdb_mssql_2.ndf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp3], FILENAME = 'T:\New_File_Path\tempdb_mssql_3.ndf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp4], FILENAME = 'T:\New_File_Path\tempdb_mssql_4.ndf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp5], FILENAME = 'T:\New_File_Path\tempdb_mssql_5.ndf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp6], FILENAME = 'T:\New_File_Path\tempdb_mssql_6.ndf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp7], FILENAME = 'T:\New_File_Path\tempdb_mssql_7.ndf');
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp8], FILENAME = 'T:\New_File_Path\tempdb_mssql_8.ndf');


3) Tworzymy nowy folder ma dysku pod tempdb


4) Użytkownik, który uruchomia usługę MSSQL musi być dodany aby miał prawa (najlepiej pełne) do dysku. 
Zwykle jest to użytkownik domenowy, albo wbudowane wirtualne konto MSSQL np: NT Service\MSSQLSERVER

5) Restart MSSQL (bazy tempdb w tym momencie się odtwarzają na nowej lokalizacji)