Я недавно обновил базу данных SQL Server 2000 до 2008 R2.
То, что я сделал, было:
- Завершение работы SQL Server 2000 (экспресс) на старой машине,
- Переместить файлы данных ( mydatabase.mdf и mydatabase.ldf ) на новый компьютер,
- Запустите SQL Server Management Studio 2008,
- Подключиться к локальной базе данных,
- Присоедините файлы данных к базе данных.
- Измените уровень совместимости базы данных на SQL 2008 (100).
Вопрос: Что еще я должен сделать, чтобы завершить миграцию?
Я хочу:
- использовать новые функции, такие как контрольная сумма и модель полного восстановления,
- сделать эту базу данных точно такой же, как она была создана в SQL 2008 R2,
- сделать эту базу данных полностью совместимой, правильной и идеально подходящей для нового ядра базы данных SQL 2008 R2.
Другими словами: я просто хочу знать, как правильно и полностью преобразовать старую базу данных SQL 2000 в новую базу данных 2008 R2, быть спокойным, что все сделано правильно, и радоваться всем новым функциям.
Я задаю этот вопрос, потому что я нашел много сайтов в Интернете, на которых написано так много разных вещей, которые приводят меня в замешательство: одни говорят, что требуется перестроить индексы, другие говорят, что нужно делать что-то другое ... и теперь я ничего не знаю, поэтому хочу услышать мнение опытного человека и четкие, пошаговые инструкции. Я работаю в очень маленькой компании, я сам по себе и не хочу все испортить.
Сэр, я действительно впечатлен вашим ответом, я не ожидал так много.
Итак, некоторые комментарии:
База данных сейчас в производстве. Как я уже сказал, он был обновлен с использованием метода deattach-attach, как я описал в первом посте и как описано в MSDN: http://msdn.microsoft.com/en-us/library/ms189625.aspx Это должно было быть сделано быстро, поэтому я был вынужден сделать это таким образом. Давайте забудем о том, насколько это неуместно, и сосредоточимся на текущей ситуации
Пользователи / персоны здесь не проблема - их всего несколько, а разрешения простые.
Приложение, которое использует базу данных, совместимо с SQL 2000 до 2012 года, так что это тоже не проблема.
Файл базы данных (MDF) невелик - всего около 1 ГБ.
Еще несколько вопросов:
Вы рекомендуете использовать метод резервного копирования / восстановления, но я сделал, как написано выше, так что я могу столкнуться с какими-либо проблемами сейчас? Все работало без проблем.
О контрольной сумме и модели полного восстановления: она не была доступна / включена в SQL 2000, поэтому я хочу использовать их сейчас. Вы сказали, что мне нужно только включить эти параметры в свойствах базы данных? Я где-то читал, что этого недостаточно, и я должен также перестроить индексы или что-то еще. Я действительно не знаю, я просто спрашиваю.
Я готовлюсь к переносу этой базы данных в SQL 2012 - сначала она была с SQL 2000 на 2008 R2, а теперь с 2008 R2 на 2012 (это было невозможно сделать напрямую из-за отсутствия поддержки баз данных SQL 2000 в SQL 2012). Итак, я понимаю, что должен следовать вашему руководству: сделайте резервную копию в 2008 R2 и восстановите в 2012, а затем сделайте остальные ваши советы, верно?
Пожалуйста, объясните мне метод резервного копирования / восстановления: это как сброс базы данных в SQL-запросы, а затем восстановление, выполнив несколько запросов? Будет ли этот метод кстати "дефрагментировать" мою базу данных? Если нет, то как его дефрагментировать / оптимизировать вручную?
Поскольку мы использовали SQL 2000 Express в течение многих лет (без интерфейса управления), мы делали резервные копии, просто останавливая движок и RAR каталог DATA. На данный момент, как и в SQL 2008, разве это не лучше, чем использование функции резервного копирования в Management Studio?
Режим полного восстановления с частыми резервными копиями журнала транзакций - где хранится журнал транзакций - это файл LDF? Как правильно сделать резервную копию?
Я знаю, что мои вопросы могут показаться глупыми, я не являюсь профессиональным администратором базы данных, но я единственный человек, который может выполнить такую «сложную задачу», как обновление ядра базы данных. Я также уверен, что ваши знания очень помогут другим людям, таким как я.
Большое спасибо за ваше время и знания, я очень ценю это.
источник
Ответы:
Первый шаг, который нужно сделать, - запустить помощник по обновлению базы данных SQL Server 2000 и решить все проблемы, о которых он сообщил.
Рекомендуется использовать инструмент Upgrade Advisor в устаревшей базе данных SQL Server 2000 и импортировать файл трассировки в инструмент Upgrade Advisor для анализа. Файл трассировки позволяет помощнику по обновлению обнаруживать проблемы, которые могут не отображаться при простом сканировании базы данных, например, при внедрении TSQL в приложения. Вы можете захватывать трассировки TSQL с помощью SQL Profiler на вашем сервере SQL Server 2000 в обычные часы и анализировать эти трассировки с помощью помощника по обновлению.
Таким образом, остальные шаги будут:
В день миграции:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
Update Statistics table_name with FULLSCAN
sp_recompile 'procedureName'
SP_REFRESHVIEW view_name
В SQL Server 2005 и более поздних версиях была представлена Почта базы данных . Поэтому вам нужно перейти с SQLMail на Database Mail.
Кроме того, если у вас есть какие-либо репликации, вы должны сбросить его. Если какой-либо DR, например, logshipping или Mirroring (новый в 2005 году и выше, но в 2012 году устарел), то вам также необходимо сбросить его.
Старые пакеты DTS необходимо перенести в SSIS с помощью
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(командной строки) или мастера миграции пакетов .Также вы можете использовать мой скрипт, который можно найти по адресу /dba//a/36701/8783 . Хотя он использует метод detach / attach, я настоятельно рекомендую вам использовать метод BACKUP / RESTORE . Измените сценарий соответственно.
Как примечание стороны:
Давайте ответим на ваши вопросы ...
Обратитесь к моему ответу. Это поможет вам правильно составить план миграции. Всегда проверяйте свой план миграции в UAT (непроизводственном) вместе с надлежащим тестированием приложений бизнес-пользователями.
CHECKSUM
является новым в SQL Server 2005 и выше. Я рассмотрел это как часть шагов миграции, описанных выше.full recovery model
не нова Это зависит от типа вашего бизнеса и определяет, сколько данных вы можете потерять в случае аварии.Режим полного восстановления с частыми резервными копиями журналов транзакций позволит вам восстановить данные на определенный момент времени и сократить объем потерь данных.
Не до конца понимаю это! Но вышеперечисленные шаги миграции помогут вам. Вам просто нужно восстановить базу данных и изменить уровень совместимости 10
100
вместе с вышеуказанными шагами.Вы должны быть осторожны с этим, так как это потребует внесения изменений и в код вашего приложения. Если код вашего приложения изменен для использования новых функций в SQL Server 2008 R2, то у вас не возникнет никаких проблем - при условии, что вы полностью выполнили полное регрессионное тестирование своего приложения в среде UAT или DEV. Это даст вам максимальную уверенность, когда вы будете выполнять фактическую миграцию в PROD.
Примечание: выше приведены шаги, которые я мог запомнить, и я почти уверен, что ничего не пропущено. Если я увижу, что я что-то пропустил, то я добавлю это или других экспертов на этот сайт - не стесняйтесь добавлять!
Все, что описано выше, необходимо сначала воспроизвести в среде NON PRODUCTION, чтобы избежать неожиданностей во время фактической миграции.
----------
Еще несколько вопросов:
Если все работало нормально, и вы смогли присоединить базу данных, то НИКАКИХ проблем не возникнет. Отсоединение / Присоединение к резервному копированию / восстановлению - это всего лишь метод перемещения вашей базы данных в другое место. Просто к вашему сведению. Резервное копирование / восстановление более надежно и надежно, так как если что-то пойдет не так (в худшем случае), то, по крайней мере, у вас есть резервная копия для восстановления и восстановления базы данных.
Как я уже сказал, контрольная сумма является новой в версии 2005 и выше. Это механизм, с помощью которого SQL Server обнаруживает повреждение страницы, особенно из-за ввода-вывода. Обратитесь к моему ответу здесь для более подробной информации.
Чтобы включить CHECKSUM, а также изменить модель восстановления на FULL, вы можете сделать это, используя приведенный ниже код T-SQL:
Примечание. После настройки параметров базы данных она будет сохранена при переходе с 2008R2 на 2012 год.
Да, пожалуйста. Как я уже сказал, резервное копирование является предпочтительным методом, если у вас нет веских причин не делать этого.
Резервное копирование / восстановление ... похоже на дамп и загрузку, используемые в Sybase, Oracle или, возможно, MySQL. Это просто SQL Server называет это .. резервное копирование / восстановление.
Необходимо прочитать: Понимание резервного копирования SQL Server Пола Рэндалла.
Простой синтаксис (полный синтаксис см. BOL ):
Затем восстановление можно выполнить на целевом сервере как:
- при условии, что расположение диска назначения не соответствует исходному серверу
- предполагая, что расположение диска назначения соответствует исходному серверу
резервное копирование / восстановление не будет дефрагментировать вашу базу данных. Вы должны использовать Alter Index Reorganize или Rebuild в зависимости от уровня фрагментации.
Поскольку вы новичок в SQL Server, я настоятельно рекомендую вам использовать Ola Hallengren's:
Остановка двигателя - худшая вещь, которую вы можете сделать для резервного копирования!
Прочитайте ссылку Пола о резервных копиях, которые я упомянул, и используйте сценарий Олы. У Microsoft есть статья в КБ со сценарием автоматического создания резервных копий - Как планировать и автоматизировать резервное копирование баз данных SQL Server в SQL Server Express
Каждая база данных SQL Server имеет журнал, в котором записываются все транзакции и изменения базы данных, сделанные каждой транзакцией. Журнал транзакций является критическим компонентом любой базы данных.
Обычное расширение соглашения об именах для журнала транзакций - «.LDF», но оно может быть любым.
Я не собираюсь больше писать об этом, так как это сделает ответ очень скудным. Обратитесь к Transaction Log Management и мой ответ здесь имеет отличные связи , а также.
РЕДАКТИРОВАТЬ: 24.08.2016 .. Это поможет будущим читателям:
Если вы переносите весь свой экземпляр с одной версии на другую, я настоятельно рекомендую использовать решение на основе PowerShell.
Start-SqlMigration
источник