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

发布于 2024-10-17 06:32:57 字数 847 浏览 2 评论 0原文

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

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

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

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

因此,我想要的是 1.仅维护DB项目(不引用DB服务器项目) 2.禁用/抑制SQL03006错误 3.能够在我的数据库项目中使用模式比较

我要求不可能吗? :)

干杯

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

First of all, I know that the error I am getting can be resolved by creating reference project (of type Database Server) and then referencing it in my Database project...
However, I find this to be overkill, especially for small teams where there is no specific role separation between developers and db admins..But, let's leave this discussion for another time... Same goes for DACs...Can't use DAC b/c of limited objects supported...

Question
Now, the question is: Can I (and how), disable SQL03006 error when building my Database project. In my case this error is generated because I am creating some users whose logins are "unresolved"...I think this should be possible I hope, since I "know" that logins will exist on the server before I deploy the script...I also don't want to maintain database server project just so I can keep refs resolved (I have nothing besides logins at server level)...

Workaround
Using pre/post deployment scripts, it is trivial to get the secript working...

Workaround Issue
You have to comment out user scripts (which use login references) for workaround...
As soon as you do that, the .sqlpermissions bomb out, saying there is no referenced users...And then you have to comment permissions out and put them in post deploy scripts...
The main disadvantage of this workaround is that you cannot leverage schema compare to its fullest extent (you have to specify to ignore users/logins/permissions)

So again, all I want is
1. to maintain only DB project (no references to DB Server projects)
2. disable/suppress SQL03006 error
3. be able to use schema compare in my DB project

Am I asking for impossible? :)

Cheers

P.S.
If someone is aware of better VS2010 database project templates/tools (for SQL Server 2008 R2) please do share...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡墨 2024-10-24 06:32:57

有两种解决方法:

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

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

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

There are two workarounds:

1.
Turn off any schema checking (Tools > Options > Database Tools > Schema Compare > SQL Server 200x, then the Object Type tab) for anything user or security related. This is a permanent fix

2.
Go through the schema comparison and mark anything user or security related as Skip and then generate your SQL compare script. This is a per schema comparison fix.

It should be obvious but if you already have scripts in your project that reference logins or roles then delete them and they won't get created.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文