Можно ли восстановить резервную копию Sql Server 2008 в SQL Server 2005 - PullRequest
26 голосов
/ 13 февраля 2009

Можно ли восстановить резервную копию базы данных SQL Server 2008 на экземпляр SQL Server 2005?

Мне нужно работать над примером приложения, для которого резервная копия базы данных находится в SQL Server 2008. Но я не смогу установить 2008 год. Так можно ли восстановить его в 2005 году?

Ответы [ 8 ]

35 голосов
/ 13 февраля 2009

Нет. Невозможно восстановить базу данных из резервной копии более новой версии.

Если вы не уверены в этом, я думаю, что вам лучше всего выбрать базу данных в обозревателе объектов в SQL 2008, щелкните правой кнопкой мыши и выберите «Задачи» -> «Создать сценарии». В диалоговом окне параметров доступно все, включая данные сценария.

И убедитесь, что вы выбрали «Скрипт для SQL 2005».

Источник

При импорте объектов на целевой сервер, если объекты большие, вы можете обнаружить, что не можете открыть файл SQL через Management Studio (с совершенно бесполезной ошибкой «Операция не может быть завершена», не меньше) , Ничего страшного, просто загрузите файл через sqlcmd.

6 голосов
/ 24 июня 2013

Одна важная вещь отсутствует во всех ответах, и это тот факт, что Генерация сценариев в SSMS неправильно упорядочивает сценарии.

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

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

По моему опыту, наиболее удобно использовать сторонние инструменты, которые могут читать резервные копии и генерировать сценарии в правильном порядке. Я использую ApexSQL Diff и Data Diff от ApexSQL, но вы не ошибетесь с любым популярным поставщиком.

5 голосов
/ 13 февраля 2009

Нет, не напрямую. Резервные копии базы данных SQL Server 2008 не имеют обратной совместимости с SQL Server 2005. Однако в SQL Server 2008 Management Studio вы можете создавать сценарии для данных и схем в режиме SQL Server 2005. Эта статья описывает процесс подробно.

4 голосов
/ 08 ноября 2012

У меня давно была эта проблема.

Невозможно восстановить резервные копии SQL2008 на экземпляр SQL2005.

И для меня обходные пути, такие как импорт / экспорт wizzard или создание сценариев базы данных из SQL2008 с использованием сценариев создания с параметром for SQL2005, не будут работать. Потому что, просто, мои базы данных перекрестно ссылаются друг на друга в своих представлениях и хранимых процедурах или udfs. Они не попадают под мою ответственность полностью, и поэтому я не могу объединить их в одну базу данных. Они представляют собой набор из 6 баз данных, которые ссылаются друг на друга непосредственно внутри своих представлений и хранимых процедур. Когда я передаю их из одного экземпляра SQL2005 в другой, я обычно делаю полное резервное копирование / восстановление.

Если бы я написал их сценарий, даже с опцией with dependencies я получал бы ошибки во время повторного создания, поскольку db1 не будет находить представления внутри db3, потому что так получилось, что я сначала выполнил сценарий create db1. Если я сначала попробую db3, я получу похожие исключения.

Единственный способ написать их так, чтобы у меня не было таких исключений зависимостей, - это определить последовательность, которая работает, и написать их частично таким образом: например: db1_tables, за которыми следуют db2_tables, за которыми следуют db2_views, за которыми следуют db1_views, sp , UDFS и т. д.

У меня есть такая последовательность. И когда мне нужно было создать новый набор из 6 дБ, я последовательно выполнил меньшие частичные сценарии.

Это объясняет, почему скрипты генерации с зависимостями и данными и со скриптами версии SQL2005 просто не будут работать для меня.

Мастер импорта / экспорта лучше в моем случае, потому что он будет копировать таблицы, и вам все равно придется создавать сценарии для всех представлений, sp, udfs и т. Д.

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

Если кто-нибудь знает такие инструменты и использовал их, дайте мне знать.

4 голосов
/ 10 ноября 2011

Да, это возможно

Использование экспорта в SQL Server 2008. Перейдите на All Programs -> Microsoft SQL Server 2008 -> Import and Export Data

  • Тогда откроется окно SQL Server Import AND Export Wizard. Нажмите Next

  • Выберите источник данных (в вашем случае из SQL Server 2008). Выберите пункт назначения (в вашем случае от SQL Server 2005).

  • Выбрать Copy data from one or more tables or view

  • Выберите таблицы источника и таблицы назначения

  • Нажмите Next & Finish

для завершения.

1 голос
/ 19 июня 2010

Вы можете использовать DBSave , это отличный бесплатный инструмент для резервного копирования и восстановления сервера MS SQL на разных машинах. Он очень прост в настройке и использовании.

0 голосов
/ 14 мая 2013

Не повезло с импортом / экспортом (экспорт плоских файлов не удался при импорте, требуя проблем с отображением наборов символов [даже при том, что тот же набор символов использовался повсюду) и / или с проблемами усечения [даже при том, что источник и назначение имели одинаковую структуру]), и мне не повезло с использованием опции «генерировать сценарии» , предложенной Гарри Шатлером (он генерировал скрипт с ошибками синтаксиса), и я наконец смог скопировать большую таблицу, которую хотел копировать с 2008 по 2005 год с помощью SQL Server bcp утилита . Так что это еще один вариант для этой ситуации, хотя для всей базы данных это будет таблица за таблицей и, вероятно, не поможет с представлениями и тому подобное.

Шаги, которые я использовал:

  1. На исходном сервере используйте «Таблица сценариев как ... СОЗДАТЬ», чтобы получить структуру, запустите ее на целевом сервере.

  2. На целевом сервере создайте файл формата bcp, используя вновь созданную таблицу:

    bcp database.owner.table format nul -f table.fmt -n

    (Если вы не используете аутентификацию Windows, вам могут потребоваться опции -U и -P для указания имени пользователя и пароля.)

  3. Скопируйте этот файл формата на исходный сервер (при необходимости).

  4. Экспорт данных в файл на исходном сервере:

    bcp database.owner.table out table.dat -f table.fmt

    (Опять же, возможно с -U и -P.)

  5. Скопируйте файл данных на целевой сервер (при необходимости).

  6. Импорт данных на целевой сервер:

    bcp database.owner.table in table.dat -f table.fmt

    (Опять же, возможно с -U и -P.)

В надежде, что это пригодится кому-то еще.

0 голосов
/ 19 июня 2010

Нет, вы не можете, но такие инструменты, как SQL Compare / Data Compare компании Red Gate, могут напрямую считывать файлы резервных копий и передавать информацию в оперативную базу данных, имея дело с любым синтаксисом или настройками, несовместимыми с SS2005

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...