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

ПУБЛИКАЦИИ  

По материалам статьи Microsoft: "INF: Moving SQL Server 7.0 Databases to a New Location"
Информация в этой статье относится к Microsoft SQL Server версии 7.0

Эта статья описывает последовательность действий для изменения места расположения баз данных и журналов регистрации транзакций, а также системных баз данных для SQL Server 7.0.
Последовательность шагов изменения расположения некоторых системных баз данных SQL Server отличается от пользовательских баз данных. Эти специальные случаи отмечены отдельно.
Все примеры в этой статье предполагают, что SQL Server 7.0 установлен в каталог D:\Mssql7, а все базы данных и журналы расположены в каталоге D:\Mssql7\Data. В предлагаемых примерах базы данных и журналы перемещаются в каталог E:\Sqldata.
Перед началом перемещения, создайте актуальные резервные копии всех баз данных, особенно master, в их текущем расположении.
Для успешной работы Вы должны иметь привилегии системного администратора (sa).
Вы должны знать имена и текущие расположения всех баз данных и журналов.

ОБРАТИТЕ ВНИМАНИЕ: Вы можете определить имя и текущее расположение всех файлов, используемых базой данных с помощью хранимой процедуры sp_helpfile:

use
go
sp_helpfile
go

Вы должны иметь единоличный доступ к перемещаемой базе данных.
Если Вы столкнётесь с проблемами в течение процесса переноса и не сможете подсоединиться к базе данных, которую Вы переместили, или не сможете после этого запустить SQL Server, проверьте файл регистрации ошибок SQL Server и обратитесь к SQL Server 7.0 Books Online для выяснения деталей относительно выявленных ошибок.

Перемещение пользовательских баз данных

Следующий пример перемещает базу данных, названную mydb, которая имеет один файл mydb.mdf и один журнал Mydblog.ldf. Если база данных, которую Вы перемещаете, имеет дополнительные файлы данных или журналы, укажите их все через запятую в хранимой процедуре sp_attach_db. При этом процедура Sp_detach_db не изменяется, независимо от того, сколько указанная в ней база данных содержит файлов, потому что этого не предусматривает её синтаксис.
Отсоедините базу данных следующим образом:

use master
go
sp_detach_db 'mydb'
go

Затем, скопируйте данные и журналы из текущего места расположения (D:\Mssql7\Data) в новое расположение (E:\Sqldata).
Снова прикрепите базу данных, задав файлы в новом расположении следующим образом:

use master
go
sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
go

Проверите изменение расположения файлов, используя sp_helpfile:

use mydb
go
sp_helpfile
go

Значения столбца имени файла должны показать его новое расположение.

Перемещение баз MSDB, Pubs и Northwind

Повторите ту же самую процедуру, как для перемещения пользовательских баз данных. Для MSDB, удостоверитесь, что SQL Server агент в это время не запущен. Иначе, хранимая процедура sp_detach_db вызовет сбои со следующим сообщением:

Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the database 'msdb' because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Перемещение базы данных master

Измените путь для базы данных master и её журналов в SQL Server Enterprise Manager.

ОБРАТИТЕ ВНИМАНИЕ: Вы также можете произвольно изменять здесь расположение файла регистрации ошибок.

Щелкните правой кнопкой мыши по SQL Server в Enterprise Manager, и выберите пункт Properties в появившемся меню.
Кликните кнопку Startup Parameters, и Вы увидите следующее:

-dD:\MSSQL7\data\master.mdf
-eD:\MSSQL7\log\ErrorLog
-lD:\MSSQL7\data\mastlog.ldf

-d - полный путь к файлу базы данных master.
-e - полный путь к файлу регистрации ошибок.
-l - полный путь к файлу журнала базы данных master.

Измените эти значения следующим образом:

Удалите текущие пути к файлам master.mdf и Mastlog.ldf
Добавьте новые пути к этим файлам, определяющие их новое расположение:

-dE:\SQLDATA\master.mdf
-lE:\SQLDATA\mastlog.ldf

Остановите SQL Server.
Скопируйте файлы master.mdf и Mastlog.ldf в новое месторасположение (E:\Sqldata).
Перезапустите SQL Server.

Перемещение базы данных Model

Чтобы переместить базу данных Model, SQL Server должен быть запущен с флагом трассировки 3608 так, чтобы это не вызвало регенерации всех баз данных кроме master.

ОБРАТИТЕ ВНИМАНИЕ: У Вас не будете возможности в это время обращаться к любым пользовательским базам данных. При использовании этого флага трассировки Вы не должны исполнять никаких операций, кроме указанных ниже шагов. Чтобы добавить флаг трассировки 3608, как параметр запуска SQL Server, исполните следующее:

В SQL Server Enterprise Manager щёлкните правой кнопкой мыши по имени сервера и выберите Properties в появившемся меню.
На вкладке General кликните Startup Parameters.
Добавьте новый параметр, как -T3608.
После добавления флага трассировки 3608, выполните следующие шаги:
Остановите и перезапустите SQL Server.
Отсоедините базу данных Model следующим образом:

use master
go
sp_detach_db 'model'
go

Переместите файлы Model.mdf и Modellog.ldf из D:\Mssql7\Data в E:\Sqldata.
Снова прикрепите базу данных Model следующим образом:

use master
go
sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
go

Удалите флаг трассировки - T3608 из блока параметров запуска в Enterprise Manager.
Остановите и перестартуйте SQL Server.
Вы можете проверить изменение расположения файла, использующих sp_helpfile:

use model
go
sp_helpfile
go

Перемещение Tempdb

Вы можете перемещать файлы tempdb, используя инструкцию ALTER DATABASE.
Определите логические имена файла для базы данных tempdb, используя sp_helpfile следующим образом:

use tempdb
go
sp_helpfile
go

Логическое имя для каждого файла содержится в столбце Nаme. Этот пример использует заданные по умолчанию имена файла tempdev и templog.
Используйте инструкцию ALTER DATABASE, определяя логическое имя файла следующим образом:

use master
go
Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
go

Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
go

Вы должны получить следующие сообщения, подтверждающие изменение:

File 'tempdev' modified in sysaltfiles. Delete old file after restarting SQL Server.

File 'templog' modified in sysaltfiles. Delete old file after restarting SQL Server.

Использование sp_helpfile для tempdb не будет подтверждать внесённые изменения, пока Вы не перезапустите SQL Server.
Остановите и перезапустите SQL Server.

Для получения дополнительной информации, изучите указанные ниже статьи Microsoft Knowledge Base:

Q274188 - PRB: Troubleshooting Orphaned Users Topic in BOL Incomplete
Q246133 - INF: Transfer Logins and Passwords Between SQL Server 7.0 and SQL Server 2000
Q168001 - PRB: User Logon and/or Permission Errors After Restoring Dump


Перевод: Александр Гладченко  2001-2004г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz