15

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

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

解决方法 使用部署前/部署后脚本,让脚本正常工作很简单......

解决方法问题 您必须注释掉用户脚本(使用登录引用)才能解决...一旦您这样做,.sqlpermissions 就会爆炸,说没有引用的用户...然后您必须注释掉权限并将它们放在部署后脚本中...此解决方法的主要缺点是您无法充分利用架构(您必须指定忽略用户/登录名/权限)

再说一次,我想要的只是 1. 只维护 DB 项目(不引用 DB Server 项目) 2. 禁用/抑制 SQL03006 错误 3. 能够在我的 DB 项目中使用模式比较

我要求不可能吗?:)

干杯

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

4

1 回答 1

7

有两种解决方法:

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

2. 进行模式比较并将任何与用户或安全相关的内容标记为“跳过”,然后生成您的 SQL 比较脚本。这是每个模式比较修复。

这应该很明显,但是如果您的项目中已经有引用登录名或角色的脚本,那么删除它们并且它们不会被创建。

于 2011-02-24T22:10:03.853 回答