Перемещение баз данных между компьютерами с SQL Server

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

В этой статье

Аннотация

В данной статье приведены пошаговые инструкции по перемещению пользовательских баз данных Microsoft SQL Server и наиболее распространенных компонентов SQL Server между компьютерами с SQL Server.

В статье предполагается, что системные базы данных master, model, tempdb и msdb перемещаться не будут. В статье приведены различные варианты действий по перемещению учетных записей и наиболее распространенных компонентов, содержащихся в базах данных master и msdb.

Дополнительные сведения о конкретных элементах, которые не перемещаются при выполнении действий, приведенных в данной статье, см. в разделе «Дополнительные сведения» данной статьи.

Примечание. Поддерживается перенос данных с сервера SQL Server 2000 на сервер Microsoft SQL Server 2000 (64-разрядная версия). 32-разрядную базу данных можно присоединить к 64-разрядной базе данных с помощью системной хранимой процедуры sp_attach_db или системной хранимой процедуры sp_attach_single_file_db либо с помощью процедуры резервного копирования и восстановления в 32-разрядной версии программы Enterprise Manager. Базы данных можно перемещать между 32-разрядными и 64-разрядными версиями SQL Server в любом направлении. Точно так же можно переносить данные с сервера SQL Server 7.0. Однако перенос данных на сервер SQL Server 7.0 с сервера SQL Server 2000 (64-разрядная версия) не поддерживается. Ниже приведено описание каждого способа.

Используется SQL Server 2005

Для переноса данных с сервера SQL Server 7.0 или SQL Server 2000 можно использовать тот же самый способ. Однако средства управления в Microsoft SQL Server 2005 отличаются от средств управления в SQL Server 7.0 и SQL Server 2000. Вместо программы SQL Server Enterprise Manager следует использовать программу SQL Server Management Studio, а вместо мастера импорта и экспорта данных служб DTS следует использовать мастер импорта и экспорта данных SQL Server (DTSWizard.exe).

Резервное копирование и восстановление

Создайте резервную копию пользовательских баз данных на исходном сервере, а затем восстановите пользовательские базы данных на сервере назначения.
  • Базу данных можно использовать и во время резервного копирования. Если после завершения резервного копирования пользователь выполнит над базой данных операции INSERT, UPDATE или DELETE, эти изменения не будут внесены в резервную копию. Если необходимо перенести все изменения, их можно перенести с минимальным временем простоя, выполнив резервное копирование журнала транзакций и полное резервное копирование базы данных.
    1. Восстановите полную резервную копию базы данных на сервере назначения и укажите параметр WITH NORECOVERY.

      Примечание. Во избежание дополнительных изменений базы данных перенаправьте пользователей, чтобы прекратить выполнение действий с базой данных на исходном сервере.
    2. Выполните резервное копирование журнала транзакций и восстановите резервную копию журнала транзакций на сервере назначения, используя параметр WITH RECOVERY. Время простоя будет ограничено временем резервного копирования и восстановления журнала транзакций. Дополнительные сведения см. в подразделе «RESTORE» (восстановление) раздела «Transact-SQL Reference» (справка по Transact-SQL) веб-узла SQL Server Books Online.
  • База данных на сервере назначения будет иметь тот же размер, что и на исходном сервере. Чтобы уменьшить размер базы данных, необходимо либо уменьшить размер исходной базы данных перед выполнением резервного копирования, либо уменьшить размер базы данных назначения после завершения восстановления. Дополнительные сведения см. в подразделе «Shrinking a Database» (уменьшение размера базы данных) раздела «Creating and Maintaining Databases» (создание и обслуживание баз данных) веб-узла SQL Server Books Online.
  • При восстановлении базы данных в местоположение, отличное от местоположения исходной базы данных, необходимо указать параметр WITH MOVE. Например, на исходном сервере база данных находится в папке D:\Mssql\Data folder. На сервере назначения диск D отсутствует, и базу данных требуется восстановить в папку C:\Mssql\Data. Дополнительные сведения о восстановлении базы данных в другое местоположение см. в следующих статьях базы знаний Майкрософт:
    221465 INF: Использование в выражении RESTORE параметра WITH MOVE (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
    304692 INF: Перемещение баз данных SQL Server в новое местоположение с помощью операций BACKUP и RESTORE (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
  • Если необходимо перезаписать уже существующую на сервере назначения базу данных, следует указать параметр WITH REPLACE. Дополнительные сведения см. в подразделе «RESTORE» (восстановление) раздела «Transact-SQL Reference» (справка по Transact-SQL) веб-узла SQL Server Books Online.
  • В зависимости от версии сервера SQL Server, на который выполняется восстановление, может потребоваться, чтобы кодировка, порядок сортировки и режим сопоставления Юникод совпадали на исходном сервере и сервере назначения. Дополнительные сведения см. в разделе «Примечание относительно режима сопоставления» данной статьи.

Хранимые процедуры Sp_detach_db и Sp_attach_db

Чтобы воспользоваться хранимыми процедурами sp_detach_db и sp_attach_db, выполните следующие действия:
  1. Отключите базу данных на исходном сервере с помощью хранимой процедуры sp_detach_db. На сервер назначения необходимо скопировать файлы с расширениями MDF, NDF и LDF, относящиеся к базе данных. Описание типов файлов см. в приведенной ниже таблице:
    Свернуть эту таблицуРазвернуть эту таблицу
    Расширение имени файлаОписание
    MDFОсновной файл данных
    NDFДополнительный файл данных
    LDFФайл журнала транзакций
  2. Подключите базу данных на сервере назначения с помощью хранимой процедуры sp_attach_db и укажите файлы, скопированные на сервер назначения в ходе выполнения предыдущего действия. Дополнительные сведения об использовании этих методов см. в следующей статье базы знаний Майкрософт:
    224071 INF: Перемещение баз данных сервера SQL Server в новое местоположение с помощью операций Detach и Attach
  • База данных недоступна после отключения, во время копирования файлов базу данных использовать нельзя. Перемещаются все данные, содержащиеся в базе данных на момент отключения.
  • При использовании метода Attach или Detach может потребоваться, чтобы набор знаков, порядок сортировки и режим сопоставления Юникод совпадали на обоих серверах. Дополнительные сведения см. в разделе «Примечание относительно режима сопоставления» данной статьи.

Примечание относительно режима сопоставления

При перемещении баз данных между серверами SQL Server 7.0 с помощью методов Attach и Detach может потребоваться, чтобы набор знаков, порядок сортировки и режим сопоставления Юникод совпадали на обоих серверах. При перемещении баз данных с сервера SQL Server 7.0 на сервер SQL Server 2000 или между серверами SQL Server 2000 в базе данных сохраняется режим сопоставления исходной базы данных. Это означает, что если на сервере назначения с SQL Server 2000 установлен режим сопоставления, отличный от режима сопоставления исходной базы данных, база данных назначения будет иметь режим сопоставления, отличный от режима сопоставления баз данных master, model, tempdb и msdb сервера назначения. Дополнительные сведения см. в разделе «Mixed Collation Environments» (среды со смешанным режимом сопоставления) веб-узла SQL Server 2000 Books Online.

Импорт и экспорт данных (копирование объектов и данных между базами данных SQL Server)

С помощью мастера импорта и экспорта данных служб DTS можно скопировать базу данных целиком или выборочно скопировать объекты и данные из исходной базы данных в базу данных назначения.
  • Исходную базу данных можно использовать во время переноса. Если исходная база данных используется во время переноса, при его проведении возможны блокировки.
  • При использовании мастера импорта и экспорта данных не требуется, чтобы набор знаков, порядок сортировки и режим сопоставления совпадали на исходном сервере и сервере назначения.
  • Поскольку неиспользуемое место на диске в исходной базе данных не перемещается, база данных назначения может иметь меньший размер, чем исходная база данных. Подобным образом, при перемещении только некоторых объектов база данных назначения может иметь меньший размер, чем исходная база данных.
  • Службы DTS SQL Server 7.0 могут неверно переносить текстовые данные и изображения, размер которых превышает 64 КБ. Эта проблема не относится к версии служб DTS SQL Server 2000. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
    257425 ИСПРАВЛЕНИЕ: В процессе переноса объектов служб DTS не переносятся данные BLOB, размер которых превышает 64 КБ (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Действие 2. Перемещение имен пользователей и паролей

Если не перенести учетные записи с исходного сервера на сервер назначения, текущие пользователи SQL Server не смогут войти в систему на сервере назначения. Имена пользователей и пароли можно перенести, следуя инструкциям, приведенным в следующей статье базы знаний Майкрософт:
246133 Перемещение имен пользователей и паролей между экземплярами SQL Server
Базы данных по умолчанию для имен пользователей на сервере назначения могут отличаться от базы данных по умолчанию для имен пользователей на исходном сервере. Изменить базу данных по умолчанию для входа в систему можно с помощью хранимой процедуры sp_defaultdb. Дополнительные сведения см. в подразделе «sp_defaultdb» раздела «Transact-SQL Reference» (справка по Transact-SQL) веб-узла SQL Server Books Online.

Действие 3. Устранение проблем, связанных с пользователями, утратившими связь с учетной записью

После переноса на сервер назначения имен пользователей и паролей возможна ситуация, при которой пользователи не смогут получить доступ к базе данных. Имена входа сопоставляются пользователям с помощью идентификатора безопасности (SID), и если идентификатор безопасности потерял согласованность после перемещения базы данных, SQL Server может запретить пользователю доступ к базе данных. Такие пользователи называются утратившими связь с учетной записью. При переносе имен пользователей и паролей с помощью средства переноса имен пользователей служб DTS SQL Server 2000 возможно появление пользователей, утративших связь с учетной записью. Кроме того, если встроенным учетным записям предоставлен доступ на сервере назначения в домене, отличном от домена исходного сервера, возможно появление пользователей, утративших связь с учетной записью.
  1. Найдите пользователей, утративших связь с учетной записью. Откройте на сервере назначения средство Query Analyzer и выполните приведенный ниже код для перемещенной базы данных пользователей:
    exec sp_change_users_login 'Report'
    Данная процедура выведет список всех пользователей, утративших связь с учетной записью, которые не могут входить в систему. Если список пользователей пуст, пропустите действия 2 и 3 и перейдите к действию 4.
  2. Устраните проблемы, связанные с пользователями, утратившими связь с учетной записью. Если пользователь утратил связь с учетной записью, пользователи базы данных могут входить в систему на сервере, но не имеют разрешения на доступ к базе данных. При попытке предоставить разрешение на доступ к базе данных появляется следующее сообщение об ошибке, поскольку пользователь уже существует:
    Microsoft SQL-DMO (ODBC SQLState: 42000) Error 15023: Пользователь или роль "%s" уже существует в текущей базе данных.
    Дополнительные сведения об устранении проблем, связанных с утратившими связь с учетной записью пользователями, см. в следующих статьях базы знаний Майкрософт:
    240872 Устранение проблем, связанных с разрешениями, при перемещении базы данных на другой сервер Microsoft SQL Server

    В данной статье приведены инструкции по сопоставлению имен входа пользователям базы данных и восстановлению связи пользователей со стандартными именами входа SQL Server и встроенными именами входа.

    274188 В разделе о восстановлении связи пользователей с учетными записями руководства SQL Server Books Online приведены не все сведения (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

    В данной статье описывается использование хранимой процедуры sp_change_users_login для последовательного восстановления связи пользователей с учетными записями. Хранимая процедура sp_change_users_login позволяет устранить проблему только для тех пользователей, которые утратили связь со стандартными именами входа SQL Server.
  3. Если владелец базы данных (dbo) приведен в списке пользователей, утративших связь с учетными записями, выполните приведенный ниже код в базе данных пользователей:
    exec sp_changedbowner 'sa'
    Хранимая процедура заменит владельца базы данных на dbo и устранит проблему. Чтобы сменить владельца базы данных на другого пользователя, выполните процедуру sp_changedbowner повторно уже для данного пользователя. Дополнительные сведения см. в подразделе «sp_changedbowner» раздела «Transact-SQL Reference» (справка по Transact-SQL) веб-узла SQL Server Books Online.
  4. Если на сервере назначения установлен SQL Server 2000 с пакетом обновления 1, пользователь-владелец базы данных может не отображаться в списке папки Users (пользователи) средства Enterprise Manager после выполнения подключения или восстановления либо обеих этих операций. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
    305711 ОШИБКА: Пользователь DBO не отображается в средстве Enterprise Manager (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
  5. При попытке изменить пароль системного администратора (sa) с помощью средства Enterprise Manager если имя пользователя, сопоставленное пользователю dbo на исходном сервере, не существует на сервере назначения, может появиться следующее сообщение об ошибке:
    Error 21776: [SQL-DMO] The name 'dbo' was not found in the Users collection. If the name is a qualified name, use [] to separate various parts of the name, and try again.
    Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
    218172 PRB: Не удается изменить пароль пользователя SA в средстве Enterprise Manager (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Внимание При повторном восстановлении или подключении базы данных пользователи снова могут утратить связь с учетными записями и потребуется повторно выполнить действие 3.

Действие 4. Перемещение заданий, оповещений и операторов

Действие 4 не является обязательным. Для всех заданий, оповещений и операторов на исходном сервере можно создать сценарии, а затем выполнить эти сценарии на сервере назначения.
  • Чтобы переместить задания, оповещения и операторы, выполните следующие действия:
    1. Откройте средство SQL Server Enterprise Manager и раскройте папку Управление.
    2. Раскройте узел Агент SQL Server, а затем щелкните правой кнопкой мыши узел Оповещения, Задания или Операторы.
    3. Выберите команду Все задачи и выберите пункт Формирование сценария SQL. Для SQL Server 7.0 выберите пункт Script All Jobs (создать сценарий для всех заданий), Alerts (оповещения) или Operators (операторы).
    Имеется возможность создать сценарии для всех оповещений (All Alerts), всех заданий (All Jobs) или всех операторов (All Operators) в зависимости от элемента, по которому был произведен щелчок правой кнопкой мыши.
  • Можно перемещать задания, оповещения и операторы с сервера SQL Server 7.0 на сервер SQL Server 2000 или между серверами с SQL Server 7.0 и SQL Server 2000.
  • При наличии на исходном сервере операторов, настроенных на уведомление с помощью SQLMail, потребуется установить SQLMail на сервере назначения для обеспечения одинаковой функциональности. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
    263556 INF: Настройка SQL Mail (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Действие 5. Перемещение пакетов служб DTS

Действие 5 не является обязательным. Если пакеты служб DTS хранятся на исходном сервере в SQL Server или репозитории, их при желании можно переместить. Чтобы переместить пакеты служб DTS между серверами, воспользуйтесь одним из приведенных ниже способов.

Способ 1

.
  1. Сохраните пакет служб DTS на исходном сервере в файл, а затем откройте файл пакета служб DTS на сервере назначения.
  2. Сохраните пакет на сервере назначения в SQL Server или в репозиторий.
    Примечание. Каждый пакет необходимо перемещать по одному в отдельных файлах.

Способ 2

  1. Откройте каждый пакет служб DTS в средстве DTS Designer.
  2. В меню Package (пакет) выберите пункт Save As (сохранить как).
  3. Укажите сервер SQL Server назначения.
Примечание. На новом сервере пакет может выполняться неправильно. Может потребоваться изменить пакет и изменить все ссылки в пакете на подключения, файлы, источники данных, профили и иные данные, расположенные на старом исходном сервере, таким образом, чтобы эти ссылки указывали на новый сервер назначения. Эти изменения необходимо вносить последовательно в каждый пакет с учетом структуры каждого пакета.

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

Также может потребоваться переместить другие элементы, такие как репликация, доставка журналов, полнотекстовые каталоги, именованные устройства резервного копирования, планы обслуживания и связанные серверы. Изучите исходный сервер на наличие подобных конфигураций и выполните действия по их настройке вручную на сервере назначения, если это необходимо.

Дополнительные сведения о перемещении полнотекстовых элементов см. в следующей статье базы знаний Майкрософт:
240867 INF: Перемещение, копирование и резервное копирование файлов и папок полнотекстовых каталогов (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Диаграммы базы данных и история резервного копирования и восстановления не перемещаются с помощью действий, описанных в данной статье. Если необходимо переместить данные сведения, переместите системную базу данных msdb. Сведения о перемещении базы данных msdb см. в статьях базы знаний Майкрософт, ссылки на которые приведены в разделе «Действие 1. Перемещение пользовательских баз данных» данной статьи. При перемещении базы данных msdb не требуется выполнять указания, содержащиеся в разделах «Действие 4. Перемещение заданий, оповещений и операторов» и «Действие 5. Перемещение пакетов служб DTS».

Ссылки

Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
320125 Перемещение диаграммы базы данных (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

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

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

 

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