Visual Studio + Database Edition + CDC = Ошибка развертывания

У меня есть база данных, использующая сбор данных изменений (CDC), которая создается из проекта базы данных Visual Studio (GDR2).

Моя проблема в том, что у меня есть хранимая процедура, которая анализирует информацию CDC и затем возвращает данные. Как это проблема, которую вы спрашиваете? Ну, порядок работы следующий.

  1. Скрипт перед развертыванием
  2. таблицы
  3. Указатели, ключи и т. Д.
  4. процедуры
  5. Сценарий после развертывания

Внутри сценария после развертывания я включаю CDC. Здесь-то и кроется проблема. Процедура, которая действует на столы CDC - это бомбардировка, потому что они еще не существуют! Я пытался поместить вызов sys.sp_cdc_enable_table в сценарий, который создает таблицу, но это не нравится.

Ошибка 102 TSD03070: этот оператор не распознается в этом контексте. C:...\ Объекты схемы \Schemas\dbo\Tables\Foo.table.sql 20 1 Foo

  • Есть ли лучший / встроенный способ включить CDC, чтобы его ссылки были доступны при создании хранимых процедур?
  • Есть ли способ запустить скрипт после создания таблиц, но до создания других объектов?
  • Как насчет того, чтобы создать проклятые зависимости процедур?
  • Или, может быть, я просто делаю то, что не следует делать?!?!

Теперь у меня есть работа вокруг.

  1. Закомментируйте тело sproc
  2. Развернуть (CDC создан)
  3. Раскомментировать sproc
  4. развертывание
  5. Все замечательно, пока я не обновлю отслеживаемую таблицу CDC. Затем мне нужно закомментировать процедуру "оскорбления".

Спасибо за чтение моего вопроса и спасибо за вашу помощь!

1 ответ

Я не очень знаком с этим в проекте VS DB, но я могу, по крайней мере, попытаться предложить альтернативное решение. Это только половина ответа, но не могли бы вы УМЕНЬШИТЬ, а НЕ ИЗМЕНИТЬ процедуру на шаге 1? По крайней мере, таким образом, вам не пришлось бы разбираться с содержимым процесса. В дни "до того, как мы выполнили diff для db", я обычно отбрасывал все биты, не относящиеся к таблицам, прежде чем изменять какие-либо таблицы.

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

Другие вопросы по тегам