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

Источник: wadmin

Системными БД в SQL являются master, msdb, model, tempdb и малоизвестная служебная БД mssqlsystemresource.
Бывает нужно перенести системные БД SQL в другую папку или на другой диск. Мне вот довелось. Делается это в 2 приема.
Сначала 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

1> ALTER DATABASE mssqlsystemresource

2> MODIFY FILE (name = 'data', filename = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\mssqlsystemresource.mdf')

3> 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

1> ALTER DATABASE mssqlsystemresource

2> MODIFY FILE (name = 'log', filename = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewFolder\mssqlsystemresource.ldf')

3> 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.

Для автоматизации переноса можно использовать скрипты приведенные здесь:
http://sqlshare.blogspot.com/2009/04/how-to-move-system-databases.html


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=23184