2009-11-12 87 views
1

我有一个使用从Visual Studio数据库项目(GDR2)创建的更改数据捕获(CDC)的数据库。Visual Studio +数据库版+ CDC =部署失败

我的问题是,我有一个分析CDC信息,然后返回数据的存储过程。你问这个问题怎么样?那么,操作顺序如下。

  1. 部署前的脚本
  2. 指标,钥匙等
  3. 程序
  4. 部署后脚本

内部部署后脚本是在那里我能CDC。这里存在问题。在CDC表上采取行动的程序正在轰炸,因为它们还不存在!我试图在创建表的脚本中调用sys.sp_cdc_enable_table,但它不喜欢这样。

错误102 TSD03070:在此上下文中无法识别此语句。 C:\模式对象\架构\ DBO \ \表20 Foo.table.sql 1美孚

  • 是否有更好的/内置的方式,使疾病预防控制中心,使得它的引用时可用存储过程是否被创建?
  • 有没有办法在创建表之后但在创建其他对象之前运行脚本?
  • 如何创建过程依赖关系的方法被定罪?
  • 或者我只是在做不应该做的事情?!?!

现在,我有一个工作。

  1. 注释掉存储过程体
  2. 部署(在创建CDC)
  3. 取消注释存储过程
  4. 部署
  5. 一切都很好,直到下一次我更新CDC跟踪表。那么我需要评论一下“冒犯”的程序。

感谢您阅读我的问题,并感谢您的帮助!

回答

0

我并不是很熟悉VSDB项目,但我至少可以尝试提供替代解决方法。这只是答案的一半,但是可以在步骤1中删除而不是ALTER处理程序?至少你这样做不需要使用proc的内容。在“我们有db差异之前”的日子里,我通常会在更改任何表之前删除所有非表位。

我知道这没有得到根本原因,但可能至少是一个更简单/更清晰的解决方法。如果没有别的,你会知道proc是否存在,阻止你认为所有的都很酷,但你的proc身体不见了,因此它没有做任何事情。

+0

我不确定这会起作用。 proc是一个文件foo.proc。SQL,每次我尝试部署时,Visual Studio都会执行。该文件本身是一个CREATE PROCEDURE dbo.foo AS ... 我不确定部署是如何工作的,如果它破坏了一切,然后从头开始。问题的间歇性使其成为PITA。例如,没有新的专栏ATM,它是着名的:) – 2009-11-12 19:58:20

相关问题