Перемещение баз данных SQL Server в новое местоположение с помощью операций Detach и Attach

Переводы статьи Переводы статьи
Код статьи: 224071 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В статье описывается, как изменить местоположение файлов данных и журналов для баз данных серверов Microsoft SQL Server 2005, SQL Server 2000 или SQL Server 7.0.

Дополнительные сведения о перемещении системных баз данных в SQL Server 2005 см. в разделе "Перемещение системных баз данных" электронной документации на SQL Server. Для просмотра раздела посетите веб-узел MSDN по следующему адресу:
http://msdn2.microsoft.com/ru-ru/library/ms345408.aspx

Дополнительная информация

Действия, необходимые для изменения местоположения некоторых системных баз данных SQL Server, отличаются от действий для изменения местоположения пользовательских баз данных. Указания по перемещению подобных баз данных приводятся отдельно.

Примечание. Системные базы данных SQL Server 7.0 несовместимы с SQL Server 2000. Не подключайте базы данных, поставляющиеся вместе с SQL Server, а также базы данных master, model и msdb SQL Server 7.0 к SQL Server 2000. При использовании SQL Server 2005 можно подключать к экземплярам программы только базы данных SQL Server 2005. Во всех примерах, приведенных в данной статье, предполагается, что программа SQL Server установлена в папку D:\Mssql7. Кроме того, в примерах принято, что все файлы данных и журналов расположены в папке по умолчанию D:\Mssql7\Data. В примерах все файлы журналов и данных перемещаются в папку E:\Sqldata для всех баз данных.

Необходимые условия

  • Создайте резервные копии всех баз данных, особенно — базы данных master из их текущего местоположения.
  • Необходимо иметь полномочия администратора системы (по умолчанию ими обладает учетная запись "sa").
  • Необходимо знать имена и текущее местоположение всех файлов журналов и данных для перемещаемой базы данных.

    Примечание. Чтобы определить имена и местоположение всех файлов, используемых базой данных, воспользуйтесь хранимой процедурой sp_helpfile:
    use <database_name>
    go
    sp_helpfile
    go
  • При этом необходимо иметь исключительный доступ к перемещаемой базе данных. Если при перемещении возникли ошибки и если после перемещения не удается запустить SQL Server или получить доступ к перемещенной базе данных, для получения сведений об ошибках ознакомьтесь с журналом ошибок SQL Server и интерактивным руководством SQL Server Books Online.

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

В следующем примере выполняется перемещение базы данных mydb. Эта база данных содержит один файл данных Mydb.mdf и один файл журнала, Mydblog.ldf. Если подлежащая перемещению база данных состоит из нескольких файлов данных и журналов, необходимо перечислить все эти файлы в списке, передаваемом хранимой процедуре sp_attach_db Элементы списка разделяются запятыми. Поскольку процедуре sp_detach_db список перемещаемых файлов не передается, то вызов данной процедуры sp_detach_db не зависит от количества файлов в базе данных.
  1. Отключите базу данных, как показано ниже:
    use master
       go
       sp_detach_db 'mydb'
       go
  2. Скопируйте файлы журналов и данных из текущего местоположения (D:\Mssql7\Data) в новое (E:\Sqldata).
  3. Повторно подключите базу данных. Укажите новое местоположение файлов:
    use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    Проверьте изменение местоположения файлов с помощью хранимой процедуры sp_helpfile:
    use mydb
       go
       sp_helpfile
       go
    В столбце filename должно отображаться новое местоположение файлов.
Примечание. В статье 922804 базы знаний Майкрософт описана проблема с базами данных SQL Server 2005, расположенными на хранилище, подключенном к сети. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
922804 Исправление. После отключения базы данных Microsoft SQL Server 2005, хранящейся на устройстве хранения данных, подключенном к сети, ее не удается подключить (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Примите во внимание эту проблему. Кроме того, примите во внимание разрешения, применяемые к базе данных при отключении от SQL Server 2005. Для получения дополнительных сведений см. раздел "Detaching and Attaching a Database" статьи "Securing Data and Log Files" интерактивного руководства SQL Server Books Online. Для просмотра этой статьи посетите следующий веб-узел MSDN:
http://msdn2.microsoft.com/ru-ru/library/ms189128.aspx

Перемещение образцов баз данных

Чтобы переместить образцы баз данных pubs и «Борей» в SQL Server 2000 или SQL Server 7.0 или образцы баз данных AdventureWorks и AdventureWorksDW (SQL Server 2005), выполните те же действия, что и при перемещении пользовательских баз данных

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

SQL Server 7.0

  1. Убедитесь, что не запущен агент SQL Server.
  2. Следуйте указаниям по перемещению пользовательских баз данных.

SQL Server 2005 и SQL Server 2000

В SQL Server 2005 и SQL Server 2000 нельзя отключать системные базы данных с помощью хранимой процедуры sp_detach_db. При попытке запустить модуль sp_detach_db 'model' появляется следующее сообщение об ошибке:
Server: Msg 7940, Level 16, State 1, Line 1
System databases master, model, msdb, and tempdb cannot be detached.
Для перемещения базы данных model необходимо запустить сервер SQL Server с ключом -c, ключом -m и флагом трассировки 3608. Флаг трассировки 3608 не разрешает SQL Server восстанавливать любую базу данных за исключением базы данных master.

Примечание. После выполнения этой операции доступ к пользовательским базам данных будет невозможен. При использовании флага трассировки нельзя выполнять какие-либо операции, кроме описанных ниже. Чтобы добавить флаг трассировки 3608 к параметрам запуска SQL Server, выполните следующие действия:
  1. В окне диспетчера SQL Server Enterprise Manager щелкните имя соответствующего сервера правой кнопкой мыши и выберите пункт Properties.
  2. На вкладке General нажмите кнопку Startup Parameters.
  3. Добавьте следующий параметр:
    -c -m -T3608
При использовании SQL Server 2005 для изменения параметров запуска службы SQL Server можно применять диспетчер SQL Server Configuration Manager. Для получения дополнительных сведений об изменении параметров запуска посетите веб-узел MSDN по адресу:
http://msdn2.microsoft.com/ru-ru/library/ms190737.aspx
. После добавления параметров -c, -m и флага трассировки 3608 выполните следующие действия:
  1. Остановите и повторно запустите SQL Server.
  2. Отключите базу данных model с помощью следующих команд:
    use master
       go
       sp_detach_db 'model'
       go
  3. Переместите файлы Model.mdf и Modellog.ldf из папки D:\Mssql7\Data в папку E:\Sqldata.
  4. Повторно подключите базу данных model с помощью следующих команд:
    use master
       go
       sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
       go
  5. В диспетчере SQL Server Enterprise Manager или SQL Server Configuration Manager удалите -c -m -T3608 из параметров запуска.
  6. Остановите и повторно запустите SQL Server. Можно проверить изменение местоположения файлов с помощью хранимой процедуры sp_helpfile. Например, введите следующую команду:
    use model
       go
       sp_helpfile
       go

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

SQL Server 7.0

Примечание. Если одновременно выполняется перемещение баз данных msdb и model, то сначала необходимо повторно подключить базу данных model, а затем — msdb. Выполните следующие действия:
  1. Убедитесь, что агент SQL Server не запущен.
  2. Для перемещения пользовательских баз данных выполните ту же самую процедуру.
Примечание. Если агент 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.

SQL Server 2005 и SQL Server 2000

Чтобы переместить базу данных MSDB, необходимо запустить SQL Server с ключами -c, -m и флагом трассировки 3608. Флаг трассировки 3608 не разрешает SQL Server восстанавливать любую базу данных, за исключеним базы данных master. Для добавления ключей -c, -m и флага трассировки следуйте указаниям раздела "Перемещение базы данных model". После добавления ключей -c, -m и флага трассировки 3608 выполните следующие действия:
  1. Остановите и повторно запустите SQL Server.
  2. Убедитесь, что не запущен агент SQL Server.
  3. Отключите базу данных msdb, как показано ниже:
    use master
    go
    sp_detach_db 'msdb'
    go
  4. Переместите файлы Msdbdata.mdf и Msdblog.ldf из текущего местоположения (D:\Mssql8\Data) в новое (E:\Mssql8\Data).
  5. В диспетчере Enterprise Manager удалите -c -m -T3608 из параметров запуска.
  6. Остановите и повторно запустите SQL Server.

    Примечание. Если при повторном подключении базы данных msdb SQL Server будет запущен с ключами -c, -m и флагом трассировки 3608, может появиться следующее сообщение об ошибке:
    Server: Msg 615, Level 21, State 1, Line 1
    Could not find database table ID 3, name 'model'.
  7. Повторно подключите базу данных msdb, как показано ниже:
    use master
    go
    sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' 
    go
Примечание. При использовании этой процедуры одновременно с перемещением базы данных model выполняется попытка отключения баз данных msdb и model. В этом случае сначала требуется повторно подключить базу данных model, а затем — базу данных msdb. Если сначала подключить базу данных msdb, при попытке повторного подключения базы данных model появится следующее сообщение об ошибке:
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
В этом случае отключите базу данных msdb, повторно подключите базу данных model и затем повторно подключите базу данных msdb.

После перемещения базы данных msdb может появиться следующее сообщение об ошибке:
Error 229: EXECUTE permission denied on object 'имя_объекта', database 'master', owner 'dbo'.
Эта проблема возникает из-за разрыва цепочки владения. Владельцы баз данных msdb и master не совпадают. В этом случае сменился владелец базы данных msdb. Для обхода проблемы выполните следующие инструкции Transact-SQL. Для этого выполните из командной строки программу Osql.exe (SQL Server 7.0 и SQL Server 2000) или Sqlcmd.exe (SQL Server 2005):
USE MSDB 
Go 
EXEC sp_changedbowner 'sa' 
Go 
Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
272424 Проверка цепочки владения объекта для нескольких баз данных зависит от параметров входа в систему, сопоставленных с владельцами объекта (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

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

  1. С помощью диспетчера SQL Server Enterprise Manager измените путь к файлам данных и журналов базы данных master.

    Примечание. Можно также изменить местоположение журнала ошибок.
  2. В диспетчере Enterprise Manager щелкните имя нужного сервера SQL Server правой кнопкой мыши и выберите команду Properties.
  3. Нажмите кнопку Startup Parameters. Появится окно, содержащее следующие элементы:
    -dD:\MSSQL7\data\master.mdf -eD:\MSSQL7\log\ErrorLog -lD:\MSSQL7\data\mastlog.ldf. Элемент 
    -d определяет полный путь к файлу данных базы данных master.

    Элемент -e определяет полный путь к файлу журнала ошибок.

    Элемент -l определяет полный путь к файлу журнала базы данных master.
  4. Измените эти элементы следующим образом:
    1. Удалите текущие элементы для к файлов Master.mdf и Mastlog.ldf.
    2. Добавьте элементы, определяющие новое местонахождение данных файлов, как показано ниже:
      -dE:\SQLDATA\master.mdf
            -lE:\SQLDATA\mastlog.ldf
  5. Остановите SQL Server.
  6. Скопируйте файлы Master.mdf и Mastlog.ldf в новое местоположение (E:\Sqldata).
  7. Перезапустите SQL Server.
Примечание. Если используется SQL Server 2005, для изменения пути к файлам данных и журнала базы данных master можно использовать диспетчер SQL Server Configuration Manager.

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

Файлы базы данных tempdb можно переместить с помощью инструкции ALTER DATABASE.
  1. Чтобы определить логические имена файлов базы данных tempdb, воспользуйтесь хранимой процедурой sp_helpfile:
    use tempdb
    go
    sp_helpfile
    go
    Логическое имя каждого файла отображается в столбце name. В данном примере используются имена файлов по умолчанию tempdev и templog.
  2. Выполните инструкцию 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
    В результате выполнения этих команд должны появиться следующие сообщения, подтверждающие внесение изменений:
    Сообщение 1
    File 'templog' modified in sysaltfiles. Delete old file after restarting SQL Server.
    Сообщение 2
    File 'templog' modified in sysaltfiles. Delete old file after restarting SQL Server.
  3. Чтобы изменения, внесенные в настройку базы данных tempdb, отображались хранимой процедурой sp_helpfile, необходимо перезапустить SQL Server.
  4. Остановите и повторно запустите SQL Server.

Перемещение базы данных master и базы данных ресурсов

Дополнительные сведения о перемещения базы данных master и базы данных ресурсов см. на веб-узле MSDN по следующему адресу:
http://msdn2.microsoft.com/ru-ru/library/ms345408.aspx

Ссылки

Для получения дополнительных сведений щелкните следующие номера статей базы знаний Майкрософт.
912397 Не удается запустить службу SQL Server при изменении параметра запуска кластеризованного экземпляра SQL Server 2000 или SQL Server 2005 на недопустимое значение (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
274188 В разделе Troubleshooting Orphaned Users руководства Books Online приведены не все сведения (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
246133 Перемещение имен пользователей и паролей между экземплярами SQL Server
168001 Входы пользователей и разрешения для базы данных могут быть неверными после восстановления базы данных (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Дополнительные сведения см. в перечисленных ниже книгах.
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit
Microsoft Press, 2001
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit
Microsoft Press, 2001

Свойства

Код статьи: 224071 - Последний отзыв: 16 июля 2013 г. - Revision: 16.2
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Ключевые слова: 
kbsqlmanagementtools kbinfo KB224071

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com