Visual Studio 2010 - 导入数据库的数据库项目无法构建

Mat*_*rts 23 sql-server database-project visual-studio-2010

我正在查看VS2010中的数据库项目,我的想法是我想要一些东西来跟踪数据库模式(在源代码控制中)以及生成"新安装"脚本和更改脚本的能力.

当我创建一个新的数据库项目向导并导入我现有的数据库模式时,它将不会"构建".我收到错误:

SQL03006:用户:[scanner]有一个未解析的对Login [scanner]的引用.

生成此错误的SQL:

CREATE USER [scanner] FOR LOGIN [scanner];

用户"scanner"是我导入的数据库中定义的登录名.我不知道它给我带来了什么,谷歌也没有多大的投入.有任何想法吗?

小智 16

Login实际上是在服务器安装的master数据库中定义的.CREATE USER语句需要指向现有的Login,否则会出错.数据库项目不知道服务器级别的登录.您可以创建服务器项目来处理登录,也可以关闭数据库项目中安全对象的检查.有关更多详细信息,请参阅Demetri M的答案:http://social.msdn.microsoft.com/Forums/eu/vstsdb/thread/1f8226fe-b791-4344-8735-3d38307e8664

  • 以上两个链接都破了 (4认同)

for*_*reh 8

我正在使用Visual Studio 2012进行SQL Server 2008 R2数据库项目.@Judah列出的选项似乎不再起作用.

现在,它们似乎是您在执行架构比较时配置的设置:

右键单击数据库项目>选择"架构比较">选择"设置"齿轮图标>选择"对象类型"选项卡>

登录是非应用程序范围的.数据库角色,权限,角色成员身份和用户都是应用程序范围的.

不幸的是,我能找到保留这些的唯一方法是保存模式比较.如果您在团队中共享此内容并且希望任何架构比较的项目/数据库(或服务器)设置,这可能会有点不方便.

不过,它完成了工作.