Сценарий всех представлений / функций / процедур в базе данных Sql Server в порядке зависимости - PullRequest
4 голосов
/ 04 апреля 2011

Sql Server 2008 (и, вероятно, большинство других версий): Management Studio имеет опцию «генерировать сценарии», которая теоретически может создавать сценарии для всей базы данных со всеми объектами (щелчок правой кнопкой мыши, задачи, создание сценариев).Он работает нормально для большинства вещей, но когда вы используете его для сценария всех представлений / хранимых процедур / функций в базе данных, он генерирует сценарий, который не учитывает зависимости между объектами.

например, если ссылки на представление AФункция B не обязательно помещает функцию B в сценарий первой.

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

Должен быть лучший способ.Какой лучший способ обойти это, желательно не тратя денег? *

* (красные ворота ftw)

Ответы [ 2 ]

3 голосов
/ 16 августа 2013

К сожалению, единственный быстрый и легкий способ создать такой скрипт - это использовать некоторые сторонние инструменты.Мы используем Apex Script , но есть и другие инструменты, и Red Gate, вероятно, имеет свою собственную версию этого.

Другие варианты:

  • Запуск сценария много раз, пока все не будет выполнено
  • Попытка создать правильный порядок самостоятельно с помощью sys.dependancies, который может работать не всегда
  • Придумать собственный алгоритм зависимости, который является избыточным…

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

Я не помню всех деталей, но речь шла о том, что зависимости не работали правильно, когда объекты отбрасывались и создавались заново.

1 голос
/ 04 апреля 2011

Вот подход бедняка:

  1. Создание запроса на основе sys.sql_dependencies, который перечисляет от снизу вверх. То есть список базы сначала объекты, затем объекты на которые зависят и т.д. дать вам порядок, в котором Скрипт ваших объектов.
  2. Используйте PowerShell, чтобы затем написать те объекты вне.
...