Каков наилучший независимый от версии метод развертывания базы данных SQL Server?

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

Обычно я использую WebMatrix исключительно для развертывания, и он работает нормально, но по какой-то причине у меня возникли проблемы с его работой на моем сервере. Следовательно, я ищу альтернативное решение.

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

Утилита импорта/экспорта не работает из-за проблем с неполными копиями схемы, вставкой удостоверений и проверками. Решения, предложенные для этих проблем, не сработали в моем конкретном случае.

Метод резервного копирования и восстановления также не работает из-за некоторых странных несовместимостей между SQL Server 2008 и 2012. SQL Server 2008 Management Studio создает исключения во время процесса восстановления базы данных 2012 года. Странно, что такое происходит, хотя я поставил совместимость базы с версией 2008.

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

Есть ли другие альтернативы? Кроме того, почему это так невероятно сложно для задачи, которая так распространена и важна, особенно в этот день в возрасте 2013 года? Получите настоящую Майкрософт!


person ATL_DEV    schedule 09.09.2013    source источник
comment
Вам следует попробовать снизить уровень совместимости базы данных до 100, а затем использовать метод отсоединения/копирования/присоединения.   -  person OzrenTkalcecKrznaric    schedule 09.09.2013
comment
Уровень совместимости ограничивает только те функции, которые доступны в новой версии; но он НЕ позволяет восстановить базу данных 2012 года на сервере 2008 года. Это НЕВОЗМОЖНО сделать - файлы слишком разные по своей внутренней структуре.   -  person marc_s    schedule 10.09.2013


Ответы (3)


Мы изменили наш метод развертывания и перемещения баз данных между серверами, экземплярами и версиями, приняв инструменты RedGate. Дороговато, но оно того стоит ИМХО.

person Rikalous    schedule 09.09.2013

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

И мы развертываем в разных средах с помощью SqlCmd.exe.

РЕДАКТИРОВАТЬ

Видеть:

http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures-and-the-like.aspx

а также

http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx

=============

Если это «слишком много», то я согласен с другим автором, RedGate — ваш друг.

person granadaCoder    schedule 09.09.2013

Помимо приведенных ниже пунктов, рассматривали ли вы проекты баз данных в VS2012? они позволяют вам создавать сценарии для таблиц, sp, триггеров, пользователей и т. д., которые вы хотите, генерировать сценарии sql cmd, вносить изменения и сравнивать схемы и контролировать версии кода вашей базы данных, я, безусловно, рекомендую это

«Создание файла дампа SQL, вероятно, сработает, но это неприемлемое решение, поскольку база данных содержит изображения и легко превышает 2 гигабайта данных, что займет вечность».

Почему это проблема? откуда вы передаете файл и по какому соединению?

«Метод резервного копирования и восстановления также не работает из-за некоторых странных несовместимостей между SQL 2008 и 2012. SQL 2008 Management Studio выдает исключения во время процесса восстановления базы данных 2012 года. Странно, что это происходит, хотя я установил совместимость базы данных на версия 2008 года"

Это не должно быть проблемой, если файл был создан в 2008 году до восстановления. Если вы создадите новую БД в своем экземпляре 2008 года, затем сделаете резервную копию и восстановите ее в экземпляре 2012 года с совместимостью с 2008 годом, тогда вы сможете использовать ее там, создать резервную копию из экземпляра 2012 года и снова восстановить до 2008 года. после.

person dougajmcdonald    schedule 09.09.2013
comment
Уровень совместимости ограничивает только те функции, которые доступны в новой версии; но он НЕ позволяет восстановить базу данных 2012 года на сервере 2008 года. Это НЕВОЗМОЖНО сделать - файлы слишком разные по своей внутренней структуре. - person marc_s; 10.09.2013
comment
Извините за мою ошибку, я думал о создании в 2008 году, восстановлении в 2012 году в режиме 2008 года и круговом обходе этого файла. - person dougajmcdonald; 10.09.2013
comment
@dougajmcdonald - нет, после восстановления базы данных на экземпляр 2012 года она структурно является файлом базы данных 2012 года. Ничто после этого не сделает его снова совместимым с экземпляром 2008 года. - person Damien_The_Unbeliever; 10.09.2013
comment
Хм, это боль, я был под впечатлением, что это сработало, как я думаю, это было в 2008 году (требуется ссылка!) - person dougajmcdonald; 10.09.2013
comment
Восстановление резервной копии SQL Server из более новой версии в более старую никогда не работало — независимо от уровней совместимости и т. д. Внутренние форматы файлов слишком разные... - person marc_s; 10.09.2013
comment
Вы говорите мне, что Microsoft не рассматривала экспорт обратной совместимости как вариант? Мы не говорим о парочке парней, работающих в своем подвале, это многомиллионная корпорация с неограниченными ресурсами. - person ATL_DEV; 14.09.2013