2009-11-12 2 views
1

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

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

  1. Предварительное развертывание сценария
  2. Таблицы
  3. Индексы, ключи и т.д.
  4. Процедуры
  5. после развертывания сценария

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

Ошибка 102 TSD03070: Это утверждение не признано в этом контексте. C: ... \ Schema Objects \ Schemas \ ДБО \ Tables \ Foo.table.sql 20 1 Foo

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

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

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

Спасибо, что прочитали мой вопрос и спасибо за вашу помощь!

ответ

0

Я не очень хорошо знаком с этим проектом VS DB, но я могу хотя бы попытаться предложить альтернативное обходное решение. Это всего лишь половина ответа, но вы можете сделать DROP, а не ALTER proc на шаге 1? По крайней мере, вам не придется обезьяны с содержимым proc. В дни «до того, как у нас был diff для db», я обычно отбрасывал все нестандартные биты перед изменением любых таблиц.

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

+0

Я не уверен, что это сработает. Proc - файл, foo.proc.sql, эта визуальная студия выполняется каждый раз, когда я пытаюсь развернуть. Сам файл является CREATE PROCEDURE dbo.foo AS ... Я не уверен, как работает развернуть, если он все сжимает, а затем начинает с нуля. Периодический характер проблемы делает его PITA. Например, нет новых столбцов ATM, он работает классно :) –

Смежные вопросы