Перемещение базы данных tempdb в MS SQL Server 2012

logo_sql_2012Системная база данных tempdb служит рабочим пространством для хранения временных объектов, таких как временные таблицы, промежуточные результаты вычислений, временные хранимые процедуры, результаты буферов и сортировки, внутренние объекты, создаваемые компонентой Database Engine и пр. Кроме того, все изменения данных в базах данных, в которых используются транзакции изоляции моментальных снимков с зафиксированным чтением и транзакции изоляции моментальных снимков, а также изменения данных для таких операций, как операции с индексами в сети, множественные активные результирующие наборы (режим MARS) и триггеры AFTER также хранятся в системной базе данных tempdb. Таким образом, данная база данных используется системой довольно активно, и возможно получить значительный прирост производительности путем переноса файлов базы данных tempdb на отдельный дисковый накопитель, более быстрый SSD-диск или даже RAM-диск. О перемещении системной базы данных tempdb в MS SQL Server 2012 (справедливо для более ранних версий) и пойдет речь в данной статье.

1. Указание каталога хранения файлов базы данных tempdb во время установки  MS SQL Server 2012

Указать отдельный каталог расположения файлов базы данных tempdb, можно еще на стадии установки MS SQL Server 2012, на странице настройки компоненты Database Engine на вкладке «Каталоги данных» (Data Directories).

peremeshhenie-bd-tempdb_01

Подробнее про установку MS SQL Server 2012 можно прочить здесь.

2. Изменения каталога хранения файлов базы данных tempdb для существующего экземплялра MS SQL Server

Если же имеется уже установленный экземпляр MS SQL Server, то изменить каталог хранения файлов базы данных tempdb не удастся с помощью стандартных средств отсоединение и присоединение базы данных. В этом случае поможет инструкция ALTER DATABASE языка Transact-SQL. Подключимся к экземпляру MS SQL Server, для которого необходимо выполнить изменения, с помощью программы  «SQL Server Management Studio».

peremeshhenie-bd-tempdb_02

Просмотрим текущее расположение файлов базы данных tempdb. Для этого в обозревателе объектов (Object Explorer) раскроем вкладки «Базы данных» (Databases) — «Системные базы данных» (System Databases). Кликнем правой кнопкой мыши по базе данных tempdb и в контекстном меню выберем пункт «Свойства» (Properties).

peremeshhenie-bd-tempdb_03

В открывшемся окне свойств перейдем на вкладку «Файлы» (Files), где можно увидеть имена файлов (File Name), логические имена файлов (Logical Name) и путь расположения каждого из файлов (Path).

Для того чтобы изменить путь расположения необходимо выполнить запрос:

USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQL_Temp\tempdb.mdf');
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'E:\SQL_Temp\templog.ldf');
GO

Где E:\SQL_Temp\ новый путь расположения файлов базы данных tempdb. Каталоги файла данных базы — файла tempdb.mdf (или файлов, если их несколько) и файла журнала транзакций — tempdb.ldf могут различаться и, соответственно, могут быть изменены независимо. Для того чтобы выполнить запрос, необходимо нажать кнопку на панели задач «Создать запрос» (New Query), в окне нового запроса ввести текст запроса и нажать кнопку «Выполнить» (Execute), расположенную там же, на панели задач.

peremeshhenie-bd-tempdb_05

После чего необходимо перезапустить экземпляр SQL Server. Сделать это можно, здесь же, кликнув правой кнопкой мыши по имени сервера в обозревателе объектов, и выбрав в контекстном меню пункт «Перезапустить» (Restart).

peremeshhenie-bd-tempdb_06

Если теперь вызвать свойства базы данных tempdb, можно увидеть, что путь расположения файлов изменился.

При старте SQL Server база данных tempdb создается каждый раз заново. Поэтому из старого каталога файлы tempdb.mdf и tempdb.ldf необходимо удалить вручную.

Помогла ли Вам данная статья?
Да, спасибо, все получилось.
Немного помогла.
Совсем не помогла.
Не то, что я искал(а).

P.S. Смотрите также:

  • Системные базы данных в MS SQL Server 2012 / 2008Системные базы данных в MS SQL Server 2012 / 2008 В рамках данной статьи рассмотрим системные базы данных MS SQL Server 2012. Ниже приводится их подробное описание, расположение, а также разбираются вопросы о необходимости резервного […]
  • Настройка Брандмауэра Windows для MS SQL Server 2012 / 2008 (R2)Настройка Брандмауэра Windows для MS SQL Server 2012 / 2008 (R2) Если к службе Microsoft SQL Server должны подключаться программы с других компьютеров в сети, то необходимо чтобы правильным образом был настроен Брандмауэр Windows на сервере, где […]
  • Добавление базы данных в Microsoft SQL Server 2012Добавление базы данных в Microsoft SQL Server 2012 Ниже приведена пошаговая инструкция, показывающая как добавить новую базу данных в Microsoft SQLServer 2012 (в более старых редакциях, например в Microsoft SQL Server 2008 R2, набор […]
  • Удаление компонент MS SQL Server 2012Удаление компонент MS SQL Server 2012 Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в […]
  • Добавление нового пользователя в Microsoft SQL Server 2012Добавление нового пользователя в Microsoft SQL Server 2012 В данной статье будет подробно, в деталях, рассказано как создать нового пользователя в Microsoft SQL Server 2012 (в более старых редакциях, например в Microsoft SQL Server 2008 R2, набор […]
Запись опубликована в рубрике Microsoft SQL Server 2012 с метками . Добавьте в закладки постоянную ссылку.


6 комментариев на «Перемещение базы данных tempdb в MS SQL Server 2012»

  1. Денис говорит:

    На последнем скрине путь на диске с: указан, а в запросе е:

  2. Максим говорит:

    Добрый день. Подскажите пожалуйста. Есть БД в SQL в БД пишется два файла. *.LDF и *.MDF. дак вот, файл логов, тобишь *.LDF весит слишком много, 104 гига. ограничение нужно сделать в 5 гигов, но он не дает это сделать. как можно сейчас обрезать файл логов?

    • Виталий Онянов говорит:

      Вариантов 2:
      1) Сделать резервную копию журнала транзакций (trn), после чего запустить сжатие базы данных (shrink darabase).
      2) Перевести базу данных в простую модель восстановления (simple), после чего опять же запустить сжатие базы данных (shrink darabase).

      Если у вас журнал транзакций вырос до такого размера, скорее всего вы не занимаетесь его резервным копированием. В этом случае, необходимо настроить соответствующие планы обслуживания, либо перевести базу данных на простую модель восстановления (simple).

  3. Нариман говорит:

    Спасибо за статью. Все получилось. Обычные базы таким же образом переносить?

  4. Андрей говорит:

    А возможно ли изменить расположение баз с указанием сетевого размещения,например:
    \\server\d$\sqlbase\ ?

Добавить комментарий

Ваш e-mail не будет опубликован.