Visual Studio 数据库项目在每次发布后删除用户?

Visual Studio Database Project removing user after every Publish?

我有一个 Visual Studio 数据库项目,每次我将它发布到 SQL 服务器时,它都会删除 NT AUTHORITY\NETWORK服务登录用户。

每次发布后,我都必须返回 SQL Server Management Studio 并通过“用户映射”选项卡再次添加用户。

有谁知道这是为什么以及我怎样才能阻止它这样做?

我目前在 dbo -> Security 文件夹中有这个,但我们有其他项目也有这个并且可以很好地与 NT AUTHORITY\NETWORK SERVICE 一起工作。

这个问题的答案是针对项目及其完成方式的。

我比较了另一个项目的 post 部署脚本,我遇到问题的那个在 sql 文件的顶部有额外的位,它根据提供的名称删除用户发布参数。这不在其他项目中。

exec sp_executesql @sql
set @sql = 'DROP USER IF EXISTS [$(AdminLoginName)]'
exec sp_executesql @sql
set @sql = 'DROP USER IF EXISTS [$(QALoginName)]'
exec sp_executesql @sql

删除它会阻止它删除我所说的用户,老实说,如果其他项目没有它,我不知道为什么它会在那里。我不喜欢数据库项目!,与 dbup 或 fluent migrator 等漂亮的编号迁移相比,我发现它们笨重且难以使用,但这正是这家公司使用的!

感谢大家的帮助,听起来有些发布选项可以忽略用户。

像这样管理设置可能很难弄清楚、设置并始终正确,因为有很多情况和项目设置需要处理。从以下开始,然后四处寻找,做一些实验——可以做到。

从 VS 发布数据库时,您应该会看到此屏幕。单击高级...

会给你这个对话框(注意我显示的是第二个选项卡)

向下滚动并select选中“不删除用户”复选框。

您每次发布数据库时都需要执行此操作——但幸运的是,您可以通过“保存配置文件”按钮将发布的“配置文件”保存回第一个屏幕。我们将这些配置文件添加到项目中它们自己的“Publish”文件夹中(标记为 Build Action = None)以便于访问和使用。

(非常)令人恼火的是,这里隐藏了很多设置和复选框,其中一些会影响数据库安全和权限设置。我相当确定这是您唯一需要处理的设置,但还有许多其他设置和变体需要考虑。无论您遇到什么,这里都有一个设置,一旦您弄明白了,就可以解决它。祝你好运!