При работе с SQL Server могут возникать ситуации, когда вам необходимо переместить системные базы данных, такие как Model, msdb, Tempdb и master. Хотя это не рекомендуется для обычных установок баз данных, это может быть полезно для устранения неполадок и восстановления после катастрофы.
Перемещение файлов системных баз данных
Для перемещения файлов системных баз данных выполните следующие шаги:
- Откройте новое окно запроса в SQL Server Management Studio.
- Используйте оператор
USE masterдля переключения на базу данных master. - Используйте оператор
ALTER DATABASEдля изменения путей файлов для каждого файла системной базы данных. Например:
ALTER DATABASE model MODIFY FILE (NAME = 'modeldev', FILENAME = 'F:\MSSQL\Data\model.mdf');
ALTER DATABASE model MODIFY FILE (NAME = 'modellog', FILENAME = 'F:\MSSQL\Data\modellog.ldf');
ALTER DATABASE msdb MODIFY FILE (NAME = 'MSDBData', FILENAME = 'F:\MSSQL\Data\MSDBData.mdf');
ALTER DATABASE msdb MODIFY FILE (NAME = 'MSDBLog', FILENAME = 'F:\MSSQL\Data\MSDBLog.ldf');
ALTER DATABASE tempdb MODIFY FILE (NAME = 'tempdev', FILENAME = 'F:\MSSQL\Data\tempdb.ldf');
ALTER DATABASE tempdb MODIFY FILE (NAME = 'templog', FILENAME = 'F:\MSSQL\Data\templog.ldf');
- Остановите экземпляр SQL Server.
- Переместите файлы баз данных в указанные места.
- Перезапустите экземпляр SQL Server.
Перемещение базы данных Master
Для перемещения базы данных master выполните следующие шаги:
- Откройте SQL Server Configuration Manager.
- В узле SQL Server Services щелкните правой кнопкой мыши экземпляр SQL Server и выберите Свойства.
- В диалоговом окне Свойства SQL Server (instance_name) щелкните вкладку Дополнительно.
- Измените значения параметров запуска, указав новое расположение для данных и журнальных файлов базы данных master.
- Остановите экземпляр SQL Server.
- Переместите файлы master.mdf и mastlog.ldf в новое место.
- Перезапустите экземпляр SQL Server.
- Проверьте изменение файла базы данных master, выполнив следующий запрос:
USE master
SELECT name AS "Logical File Name", physical_name AS "Physical File Location", state_desc AS "State"
FROM sys.master_files
WHERE database_id = DB_ID(N'master');
Перемещение базы данных ресурсов
База данных ресурсов содержит все системные объекты, включенные в SQL Server, и не содержит пользовательских данных или метаданных пользователей. Расположение базы данных ресурсов не может быть изменено с ее расположения по умолчанию.
Для перемещения базы данных ресурсов выполните следующие шаги:
- Переведите SQL Server в режим одного пользователя и подключитесь с учетной записью sysadmin, используя параметры запуска
-cи-m. - Используйте команду
SQLCMDдля подключения к серверу с необходимыми флагами трассировки:
SQLCMD -U <username> -P <password> -c -m -t3607 -t3608- Выполните следующие команды для перемещения базы данных ресурсов:
USE master
ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME = data, FILENAME = N'F:\MSSQL\Log\mssqlsystemresource.mdf');
ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME = log, FILENAME = N'F:\MSSQL\Data\mssqlsystemresource.ldf');
- Остановите экземпляр SQL Server.
- Переместите файлы базы данных ресурсов в указанные места.
- Перезапустите экземпляр SQL Server.
Сопоставление информации о базах данных между SQL Server 2000 и 2005
Если вы переходите с SQL Server 2000 на SQL Server 2005, вам может потребоваться сопоставить определенную информацию о базах данных. Вот несколько примеров:
| ID | Информация | SQL Server 2000 | SQL Server 2005 |
|---|---|---|---|
| 1 | Таблица/представление системной базы данных | SELECT * FROM master.dbo.sysdatabases | SELECT * FROM sys.databases |
| 2 | Таблица/представление файлов системной базы данных | SELECT * FROM dbo.sysfiles | SELECT * FROM sys.database_files |
| 3 | Таблица/представление файлов системной базы данных | SELECT * FROM master.dbo.sysaltfiles | SELECT * FROM sys.master_files |
| 4 | Статистика ввода-вывода для файлов базы данных | SELECT * FROM ::fn_virtualfilestats(1, 1) | SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL) |
| 5 | Метаданные базы данных | EXEC master.dbo.sp_databases | EXEC master.dbo.sp_databases |
| 6 | Метаданные базы данных | EXEC master.dbo.sp_helpdb | EXEC master.dbo.sp_helpdb |
| 7 | Изменение владельца базы данных | EXEC sp_changedbowner sa | EXEC sp_changedbowner sa |
| 8 | Перевод идентификатора базы данных в имя | SELECT DB_NAME(1) | SELECT DB_NAME(1) |
| 9 | Перевод имени базы данных в идентификатор | SELECT DB_ID(‘master’) | SELECT DB_ID(‘master’) |
| 10 | Статус базы данных | SELECT DATABASEPROPERTYEX(‘master’, ‘Status’) | SELECT DATABASEPROPERTYEX(‘master’, ‘Status’) |
Это всего лишь несколько примеров того, как сопоставить информацию о базах данных между SQL Server 2000 и 2005. Для получения дополнительной информации обратитесь к официальной документации Microsoft.
Помните, что перемещение системных баз данных следует выполня