Перейти к основному содержанию

MSSQL — изменить количество файлов в tempdb

Microsoft SQL Server

Допустим, у нас в tempdb только один файл данных и один файл лога. Иногда требуется добавить файлы данных.

К примеру, добавим ещё семь файлов данных:

USE [master]
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev1', FILENAME = N'R:\tempdb1.mdf' , SIZE = 8192KB , FILEGROWTH = 102400KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev2', FILENAME = N'R:\tempdb2.mdf' , SIZE = 8192KB , FILEGROWTH = 102400KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev3', FILENAME = N'R:\tempdb3.mdf' , SIZE = 8192KB , FILEGROWTH = 102400KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev4', FILENAME = N'R:\tempdb4.mdf' , SIZE = 8192KB , FILEGROWTH = 102400KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev5', FILENAME = N'R:\tempdb5.mdf' , SIZE = 8192KB , FILEGROWTH = 102400KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev6', FILENAME = N'R:\tempdb6.mdf' , SIZE = 8192KB , FILEGROWTH = 102400KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev7', FILENAME = N'R:\tempdb7.mdf' , SIZE = 8192KB , FILEGROWTH = 102400KB )
GO

Здесь:

  • NAME — название файла данных
  • FILENAME — полный путь к файлу данных
  • SIZE — размер, в данном случае начальный, 8 МБ
  • FILEGROWTH — автоматический прирост, я поставил 100 МБ

Можно ещё указывать при необходимости:

  • MAXSIZE — максимальный размер, например, MAXSIZE = 35840000KB

tempdb

Удалить файл данных

Если нужно удалить один из файлов данных...

USE tempdb
GO
CHECKPOINT
GO
USE tempdb
GO
DBCC SHRINKFILE (tempdev7, EMPTYFILE)
ALTER DATABASE tempdb REMOVE FILE tempdev7
GO

Более сильное колдунство удаления:

USE [tempdb]
GO
DBCC DROPCLEANBUFFERS
GO
DBCC FREEPROCCACHE
GO
DBCC FREESESSIONCACHE
GO
DBCC FREESYSTEMCACHE ( 'ALL')
GO
DBCC SHRINKFILE (N'temp7' , EMPTYFILE)
GO
ALTER DATABASE [tempdb] REMOVE FILE temp7
GO

Если файлы заблокированы, то изменяем размер и рост файла. Затем перезапускаем службу SQL. Файлы маленькие и заблокированы для роста? можно их легко удалить.

--before the sql server restart
USE [master]
ALTER DATABASE TempDB MODIFY FILE
(NAME = temp7, SIZE = 1KB, FILEGROWTH = 0 )
GO

--then after the sql server restart
USE [TempDB]
DBCC SHRINKFILE (N'temp7' , EMPTYFILE)
GO
ALTER DATABASE [tempdb] REMOVE FILE [temp7]
GO

Теги

 

Похожие материалы

Maintenance Plans — резервное копирование и обслуживание баз данных 1С в Microsoft SQL Server 2019

Microsoft SQL Server 2019 позволяет использовать встроенные средства резервного копирования и обслуживания баз данных — Maintenance Plans. Описываемый план обслуживания успешно используется для баз данных 1С, но не ограничивается ими.

Теги