Миграция с SQL Server 2000 на 2012 без экземпляра 2005 или 2008

11

Я сталкивался с тремя старыми базами данных на SQL Server 2000, которые мне нужно перенести на 2012 год. Я считаю, что стандартный подход заключается в восстановлении экземпляра 2005 или 2008 года, обновлении, реэкспорте и, наконец, восстановлении в 2012 году.

Хорошо, за исключением того, что у нас нет доступных экземпляров 2005 или 2008 года.

Существуют ли обходные пути или другие методы, которые стоит попробовать?

Для справки, базы данных содержат только 15-20 таблиц и несколько представлений, они выглядят очень простыми, а размер резервных копий составляет всего 100-200 МБ.

Lunatik
источник
1
Поскольку ваша база данных небольшая, вы можете написать сценарий для всей базы данных - только схемы (без данных) с помощью PowerShell или SSMS), а затем использовать bcp OUT и массовую вставку . Как только вы закончите перенос данных, вы сможете следовать рекомендациям, изложенным в этом ответе
Кин Шах
1
это совершенно законно и рассматривается в лицензировании sql для установки промежуточного экземпляра в качестве «моста» для обновления. пользователи не должны подключаться к нему. ...
Ростол

Ответы:

21

Нет, нет обходного пути для обновления базы данных напрямую с 2000 по 2012 год.

Поскольку у вас нет тонны данных, вы можете делать все что угодно для перемещения данных (но не базы данных в целом), включая:

  • Мастер импорта / экспорта
  • SSIS
  • BCP
  • Ручные запросы с использованием связанного сервера с 2012 года или приложения

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

Если ваши базы данных меньше 10 ГБ, вы можете установить копию Express (бесплатно) за несколько минут и использовать ее. Вы можете скачать 2008 R2 Express здесь . Я не думаю, что в 2000 году были какие-либо корпоративные функции, связанные со структурой базы данных и т. Д., Которые бы блокировали это обновление (более серьезная проблема для более современных версий).

Если ваша база данных слишком велика для Express, вы сможете найти Developer Edition за 49 долларов или около того (или даже дешевле - я нашел 2005 на eBay за 37 долларов ), или если у вас есть подписка MSDN, вы сможете получить любую SKU оттуда.

Или вы можете обойтись без использования Evaluation Edition, которая на удивление все еще предлагается для загрузки для более старых версий (например, я нашел 2008 здесь ), однако я разговариваю по телефону, поэтому не смог подтвердить, что загрузка для этой версии все еще работает ,

Аарон Бертран
источник
Спасибо. Поскольку скорость интернета здесь низкая, я пытался избежать загрузок, но я нашел установочные файлы 2005 года, так что я думаю, что это будет самый быстрый способ.
Лунатик
Нет, единственный действительно полезный - это 2008 год, иначе вам также понадобится 2010 год с 2005 года
Ростол
Вы уверены, что @Rostol? sqlskills.com/blogs/paul/…
Адам Нофсингер
@AdamNofsinger Я собирался сказать, что на 100% уверен, я сделал это гаджлион раз (у нас есть старый SQL 2000, используемый старой системой), и у нас есть цель, созданная в 2008 vm, чтобы сначала восстановить данные, а затем выполнить резервное копирование и восстановление в SQL 2016 ... Но если Пол Рэндал говорит иначе ... но имейте в виду, что прямой метод работает с 2005+. не для 2000 и 2003 года подряд.
Ростол
6

Заявление об отсутствии обходного пути выглядит немного преждевременным.

Вы говорите, что ваша база данных содержит только несколько таблиц и представлений. Почему бы не экспортировать схему таблиц и представлений в виде SQL-операторов создания и запуска их в вашей целевой базе данных? Затем вы можете также экспортировать фактические данные в нечто вроде формата CSV и импортировать их в целевую базу данных, или, возможно, даже написать что-то на C # / C ++ / etc для экспорта / импорта фактических данных.

Вам не нужно тратить ни копейки на новые экземпляры SQL Server, которые вам в конечном счете не нужны.

Николас Хилл
источник
3
И, конечно, включает все другие объекты, хранимые процедуры, триггеры, функции и т. Д. Также есть утилита BCP для копирования данных из базы данных и в нее.
RLF
1
Спасибо. Это то, на что я, возможно, надеялся, но спор с БД не моя ежедневная работа, и я не слишком уверен, есть ли другие зависимости или настройки (пользовательские разрешения и т. Д.), Которые не будут скопированы, если я только что экспортировал таблицы и т. д.
Lunatik
4
Справедливо, обновил мой ответ. Тем не менее, думаю, что обходной путь - это гораздо больше, чем просто временная установка экземпляра и выполнение двух надежных и не подверженных ошибкам операций резервного копирования + восстановления. (Кроме того, это не касается денег , так как у OP уже есть двоичные файлы 2005 года и небольшая база данных, которая в любом случае должна быть перенесена с использованием SQL Express.)
Аарон Бертран
3

Нет, вы не можете перенести его напрямую с 2000 на 2012.

Что вы можете сделать, это установить временный экземпляр 2005 ИЛИ 2008 или 2008R2, восстановить базу данных 2000 здесь. После этого вы можете выполнить обновление с установленного экземпляра, сделав резервную копию базы данных с этого экземпляра и восстановив его на sql server 2012.

Вам нужно будет выполнить миграцию в два этапа:

  • Шаг 1. Например, выполните первую миграцию с SQL 2000 на SQL 2008. Вы должны быть SQL 2000 с пакетом обновления 4 (SP4), затем выполните следующие действия: Миграция с SQL Server 2000 на SQL Server 2008

  • Шаг 2. Выполните второй переход с SQL Server 2008 на 2012.

KASQLDBA
источник
0

Вы говорите, что «столкнулись с тремя старыми базами данных, сидящими на SQL Server 2000», что наводит меня на мысль, что вам нужны только данные. Я предполагаю, что если бы их запускали с какой-то целью, вы бы знали. Если это так, игнорируйте все вопросы пользователей, безопасности и т. Д.

Мастер импорта / экспорта всех таблиц. Сценарий хранимых процедур и представлений. Проверьте планы обслуживания и задания агентов просто для документирования процессов, которые вы, возможно, захотите просмотреть позже.

Митч Штайн
источник
0

Вы не можете выполнить миграцию напрямую с SQL Server 2000 на SQL Server 2012, и если вы попытаетесь это сделать, вы получите следующую ошибку 3169, которая связана с проблемами совместимости.

Миграция на SQL Server 2012 может быть выполнена из одной из следующих версий (минимальные версии) SQL Server 2005 SP4 или SQL Server 2008 SP2 или SQL Server 2008 R2 SP1.

Итак, первый шаг для перехода с SQL Server 2000 на одну из этих версий, я нашел один из помощников по обновлению для SQL Server 2008 по следующей ссылке . Чтобы убедиться, что все будет работать гладко, прежде чем начинать процесс восстановления, вам нужно запустить приложение. Затем «Запустите мастер анализа помощника по обновлению» и следуйте инструкциям мастера.

После получения отчета вам необходимо восстановить базу данных на целевом сервере SQL Server 2005 с пакетом обновления 4 (SP4) или SQL Server 2008 с пакетом обновления 2 (SP2) или SQL Server 2008 R2 с пакетом обновления 1 (SP1) и запустить для него уровень совместимости (его можно найти в параметре базы данных). Для входа в SQL Server, пожалуйста, следуйте инструкциям в следующей ссылке .

Когда это будет завершено, теперь вам нужно перейти на SQL Server 2012, повторив те же шаги с сервера, на который вы выполнили первую миграцию.

Ахмад Абухасна
источник
0

Во-первых, я согласен, что вы не должны переходить с 2000 на 2012 напрямую. Я думаю, что этот процесс хорошо освещен. Я хотел предложить вам точно узнать, использует ли кто-нибудь базы данных и для чего он их использует. Возможно, они не используются. Это происходит, и если это так, то у вас нет проблем. Возможно, что добавление 2 или 3 таблиц и данных (для 2000 используйте bcp, если вы хотите вывести данные для отдельной таблицы, ее простой и надежной) в существующую базу данных 2012 года, будет отвечать потребностям пользователей. Если вы сделаете это, то создайте новые таблицы в базе данных 2012 года и скопируйте данные, необходимые для csv, вы можете скопировать их обратно, если хотите. Если вам нужно перенести больше, чем таблицу или две, то самый простой и безопасный и лучший способ - выполнить двухэтапную миграцию. Дон»

dkh63493
источник
Вы должны знать, что сценарий схемы в 2000 году не был на 100% точным. Я помню, что мне всегда приходилось редактировать сценарий.
dkh63493