SQL Server – Перенос системных баз

Системными БД в MS SQL являются master, msdb, model, tempdb и малоизвестная служебная БД mssqlsystemresource.

Довольно часто необходимо перенести системные БД SQL в другую папку или на другой диск.

Делается это в 2 приема.
Сначала MS SQL Server нужно будет сначала перенести master и mssqlsystemresource, а затем оставшиеся msdb, model, tempdb.

В моем примере буду переносить базы из

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\

в

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\

Запускаем SQL Server Configuration Manager

SQL Server (MSSQLSERVER) -> Properties
Вкладка Advanced, Startup Parameters
Изменяем пути

-dC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\NewFolder\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\NewFolder\mastlog.ldf

Останавливаем службу SQL

Запускаем SQL в монопольном режиме и работаем только с базой master
Для этого в cmd набираем команду

net start MSSQLSERVER /c /m /T3608

запускаем sqlcmd –A

набираем 3 строки для изменения пути к mssqlsystemresource.mdf

ALTER DATABASE mssqlsystemresource
MODIFY FILE (name = ‘data’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\mssqlsystemresource.mdf’)
GO

На выходе ответ об успешном применении

The file «data» has been modified in the system catalog. The new path will be used the next time the database is started.

набираем 3 строки для изменения пути к mssqlsystemresource.ldf

ALTER DATABASE mssqlsystemresource
MODIFY FILE (name = ‘log’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\mssqlsystemresource.ldf’)
GO

На выходе ответ об успешном применении

The file «log» has been modified in the system catalog. The new path will be used the next time the database is started.

Выходим из sqlcmd командой QUIT

Останавливаем службу SQL

Переносим файлы .mdf и .ldf от баз mssqlsystemresource и master в новое место

Стартуем SQL как обычно

Далее переносим базы msdb, model, tempdb
в MS SQL Server Management Studio выполняем запросы:

ALTER DATABASE msdb
MODIFY FILE (name = ‘MSDBDATA’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\MSDBDATA.mdf’)
ALTER DATABASE msdb
MODIFY FILE (name = ‘MSDBLOG’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\MSDBLOG.ldf’)

ALTER DATABASE model
MODIFY FILE (name = ‘modeldev’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\model.mdf’)
ALTER DATABASE model
MODIFY FILE (name = ‘modellog’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\modellog.ldf’)

ALTER DATABASE tempdb
MODIFY FILE (name = ‘tempdev’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\tempdb.mdf’)
ALTER DATABASE tempdb
MODIFY FILE (name = ‘templog’, filename = ‘C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\templog.ldf’)

Останавливаем SQL
Переносим файлы .mdf и .ldf в новое место
Стартуем SQL
Всё.

Проверено на работоспособность в SQL 2005 и 2008.

Для автоматизации переноса можно использовать скрипты приведенные здесь.

Вы можете отслеживать комментарии к этой записи с помощью RSS 2.0. Вы можете оставить комментарий, или использовать trackback с вашего сайта.

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

Для отправки комментария вы должны авторизоваться.