Visual Studio + Database Edition + CDC = Ошибка развертывания
У меня есть база данных, использующая сбор данных изменений (CDC), которая создается из проекта базы данных Visual Studio (GDR2).
Моя проблема в том, что у меня есть хранимая процедура, которая анализирует информацию CDC и затем возвращает данные. Как это проблема, которую вы спрашиваете? Ну, порядок работы следующий.
- Скрипт перед развертыванием
- таблицы
- Указатели, ключи и т. Д.
- процедуры
- Сценарий после развертывания
Внутри сценария после развертывания я включаю CDC. Здесь-то и кроется проблема. Процедура, которая действует на столы CDC - это бомбардировка, потому что они еще не существуют! Я пытался поместить вызов sys.sp_cdc_enable_table в сценарий, который создает таблицу, но это не нравится.
Ошибка 102 TSD03070: этот оператор не распознается в этом контексте. C:...\ Объекты схемы \Schemas\dbo\Tables\Foo.table.sql 20 1 Foo
- Есть ли лучший / встроенный способ включить CDC, чтобы его ссылки были доступны при создании хранимых процедур?
- Есть ли способ запустить скрипт после создания таблиц, но до создания других объектов?
- Как насчет того, чтобы создать проклятые зависимости процедур?
- Или, может быть, я просто делаю то, что не следует делать?!?!
Теперь у меня есть работа вокруг.
- Закомментируйте тело sproc
- Развернуть (CDC создан)
- Раскомментировать sproc
- развертывание
- Все замечательно, пока я не обновлю отслеживаемую таблицу CDC. Затем мне нужно закомментировать процедуру "оскорбления".
Спасибо за чтение моего вопроса и спасибо за вашу помощь!
1 ответ
Я не очень знаком с этим в проекте VS DB, но я могу, по крайней мере, попытаться предложить альтернативное решение. Это только половина ответа, но не могли бы вы УМЕНЬШИТЬ, а НЕ ИЗМЕНИТЬ процедуру на шаге 1? По крайней мере, таким образом, вам не пришлось бы разбираться с содержимым процесса. В дни "до того, как мы выполнили diff для db", я обычно отбрасывал все биты, не относящиеся к таблицам, прежде чем изменять какие-либо таблицы.
Я знаю, что это не доходит до основной причины, но может быть, по крайней мере, легче / яснее обойти. Если ничего другого, вы бы знали, есть ли этот процесс или нет, мешая вам думать, что все круто, но ваше тело не хватает, следовательно, он ничего не делает.