Temp DB

Работаем с Temp DB SQLServer. Расширение, перенос, обрезка.

Добавление дополнительных tempDB data files

Получить детализированную информацию о файлах БД, логах

use tempDB 
go 
EXEC SP_HELPFILE;

Добавить файлы для использования в tempDB

USE [master]
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev', NEWNAME = N'tempdb', SIZE = 2097152KB , FILEGROWTH = 512MB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb32', FILENAME = N'N:\TEMPDB\tempdb32.mdf' , SIZE = 2097152KB , FILEGROWTH = 512MB )
GO

Удаление файлов tempDB (не полностью, а только дополнительных)

Restart SQL Server Instances and then execute the following query.

USE tempdb; 
GO 
DBCC SHRINKFILE('tempdev2', EMPTYFILE) 
GO 
USE master; 
GO 
ALTER DATABASE tempdb 
REMOVE FILE tempdev2;

This will shrink the tempdb2.mdf data file and remove it. If the error still exists then modify the tempdev2 file by reducing its size to only 1 MB. To modify a temp db size run the following query:

ALTER DATABASE [tempdb] MODIFY FILE ( 
NAME = N'tempdev2', 
SIZE = 1024KB ); 

Now once again restart the SQL Server Instances and then execute the following query:

USE tempdb; 
GO 
DBCC SHRINKFILE('tempdev2', EMPTYFILE) 
GO 
USE master; 
GO 
ALTER DATABASE tempdb 
REMOVE FILE tempdev2;

This will definitely remove the tempdev2 data file.

Shrink TempDB

CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC FREEPROCCACHE;
GO
DBCC FREESYSTEMCACHE ('ALL');
GO
DBCC FREESESSIONCACHE;
GO
DBCC SHRINKFILE (tempdev, 100);
GO

Перенос TempDB - главного файла и логов

USE master;
GO

ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'T:\MSSQL\DATA\tempdb.mdf');
GO

ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'T:\MSSQL\DATA\templog.ldf');
GO

Если переименовали диск, где лежит БД и лохонулись, оставили там tempdb

  • Запусить SQL в минимальной конфигурации, без tempdb
NET START MSSQLSERVER /f /T3608
  • Перейти в командную строку sql
SQLCMD -S sbvtnsap38 -E
  • Теперь снова измените путь
USE master
GO

alter database tempdb  
modify file  
(  
 name = tempdev,  
 filename = 'C:\YourNewTempdbDir\tempdb.mdf'  
)  
go

alter database tempdb  
modify file  
(  
 name = templog,  
 filename = 'C:\YourNewTempdbDir\templog.ldf'  
)  
go

Источник <https://qastack.ru/dba/20734/safely-moving-and-creating-new-tempdb-files>