有没有办法在VS2010数据库项目中抑制SQL03006错误?

时间:2011-02-14 18:21:50

标签: visual-studio-2010 sql-server-2008-r2 datadude

首先,我知道我可以通过创建引用项目(数据库服务器类型)然后referencing it in my Database project来解决我得到的错误... 但是,我发现这有点矫枉过正,特别是对于那些在开发人员和数据库管理员之间没有特定角色分离的小团队。但是,让我们再讨论一下这个问题......对于DAC来说也是如此......不能使用支持有限对象的DAC b / c ......

问题 现在,问题是:我可以(和如何),在构建我的数据库项目时禁用SQL03006错误。在我的情况下生成此错误是因为我正在创建一些登录“未解决”的用户...我认为这应该是可能的,我希望,因为我“知道”在部署脚本之前服务器上将存在登录.. 。我也不想维护数据库服务器项目,所以我可以保持refs解析(除了服务器级别的登录之外我什么都没有)...

解决方法 使用前/后部署脚本,让secript工作是微不足道的......

解决方法问题 您必须注释掉用户脚本(使用登录参考)以解决方法... 一旦你这样做,.sqlpermissions炸弹,说没有被引用的用户......然后你必须注释权限并将它们放在post deploy脚本中...... 此解决方法的主要缺点是您无法充分利用架构比较(您必须指定忽略用户/登录/权限)

所以,我想要的只是 1.仅维护DB项目(不引用DB Server项目) 2.禁用/禁止SQL03006错误 3.能够在我的数据库项目中使用模式比较

我要求不可能吗? :)

干杯

P.S。 如果有人知道更好的VS2010数据库项目模板/工具(对于SQL Server 2008 R2),请分享...

1 个答案:

答案 0 :(得分:7)

有两种解决方法:

1。 关闭任何用户或安全相关的任何架构检查(工具>选项>数据库工具>架构比较> SQL Server 200x,然后是对象类型选项卡)。这是永久修复

2。 完成模式比较并将与用户或安全相关的任何内容标记为Skip,然后生成SQL比较脚本。这是每个架构比较修复。

这应该是显而易见的,但是如果您已经在项目中引用了引用登录名或角色的脚本,那么就删除它们并且不会创建它们。