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)