Рекомендации по ведению сценария создания базы данных TSQL для веб-приложения

#asp.net #sql-server #tsql #web-applications

#asp.net #sql-сервер #tsql #веб-приложения

Вопрос:

У нас есть ASP.NET веб-приложение и необходимость поддерживать сценарий создания и инициализации базы данных.

Существуют ли какие-либо отраслевые рекомендации, о которых люди знают, для поддержки сценариев создания и инициализации базы данных. Я могу придумать два основных подхода.

  1. Поддерживайте сценарий создания tsql непосредственно вручную.
  2. Поддерживайте основную базу данных и создайте сценарий, который затем проверяется в source safe.

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

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

В настоящее время мы генерируем сценарий из management Studio, но порядок таблиц кажется случайным.

И чем более автоматизировано решение, тем лучше.

Комментарии:

1. Я полагаю, что мы используем все, что предоставляет Visual Studio, я рассмотрю подробности завтра (мне нужно, потому что он не обрабатывает индексированные представления …)

2. почему бы не использовать проект базы данных? У VS есть шаблон для этого, и я думаю, вы можете все это сделать.

3. У нас есть только самая дешевая версия VS

Ответ №1:

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

По моему опыту, лучше всего использовать сценарии обновления. Эта практика полезна даже для одного развернутого сайта, но она становится бесценной с несколькими расположениями, которые могут быть разных версий. Но даже с одним единственным рабочим сайтом все еще полезно иметь возможность многократно тестировать обновление (начиная с резервных копий текущей версии), сохранять изменения в системе управления версиями, иметь хорошо формализованную и проверяемую экспертами процедуру изменения (сценарий обновления).). И сценарии обновления могут быть адаптированы к конкретным потребностям операционного сайта, таким как обработка большой таблицы с особой тщательностью или работа с зашифрованными данными, или любой другой из множества деталей, которые инструменты на основе различий игнорируют или игнорируют. Основным недостатком является необходимость написания сценариев, которые требуют реальных знаний T-SQL (забудьте всех «дизайнеров» в вашем любимом инструменте управления).

Комментарии:

1. Другим недостатком сценариев обновления является то, что — если они не связаны со сценариями создания всей базы данных — вы не можете легко воссоздать или повторно развернуть базу данных. Если вы хотите создать новую среду для тестирования или разработки, вам необходимо выполнить резервное копирование и восстановление из существующей среды. Это работает, но не идеально.

2. Сценарий обновления с версии 0 до версии 1 — это тот, который развертывает исходную базу данных (т. Е. «создать»).

Ответ №2:

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

Комментарии:

1. Выглядит красиво, но есть проблема убедить босса в этом

Ответ №3:

Вы ищете проекты баз данных Visual Studio?

Я использую проекты баз данных для хранения всех объектов базы данных (таблиц, представлений, функций, ключей, триггеров, индексов в схемах) и сохранения управления версиями в TFS. Вы можете создать базу данных, чтобы убедиться, что все правильно. Вы можете выполнить развертывание в новой базе данных или выполнить сравнение схемы с существующей базой данных.

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

Комментарии:

1. может быть полезно, но у нас есть только vs standard, который их не включает