Sql server 如果用户不是系统管理员,数据库部署会无意中删除数据库中的SQL Broker对象

Sql server 如果用户不是系统管理员,数据库部署会无意中删除数据库中的SQL Broker对象,sql-server,visual-studio,Sql Server,Visual Studio,我有一个数据库项目。我正试图针对数据库部署该项目。如果用户不是系统管理员,则数据库部署会无意中删除数据库中而不是源(数据库项目)中的SQL Broker对象 使用VisualStudio和使用Dacpac部署得到了相同的结果。在我的发布配置文件中,Drop是未选中的,因此它不应该尝试在目标中删除不在源中的对象。如果用户帐户是sysadmin,那么这就可以正常工作。但如果不是,它将删除数据库中所有不在源代码中的sql broker对象。我终于找到了数据库部署在系统管理员和非系统管理员之间表现不同的

我有一个数据库项目。我正试图针对数据库部署该项目。如果用户不是系统管理员,则数据库部署会无意中删除数据库中而不是源(数据库项目)中的SQL Broker对象


使用VisualStudio和使用Dacpac部署得到了相同的结果。在我的发布配置文件中,Drop是未选中的,因此它不应该尝试在目标中删除不在源中的对象。如果用户帐户是sysadmin,那么这就可以正常工作。但如果不是,它将删除数据库中所有不在源代码中的sql broker对象。我终于找到了数据库部署在系统管理员和非系统管理员之间表现不同的原因。当我从VisualStudio数据库发布中“生成脚本”时,我运行了一个sql跟踪

在非sa发布期间,跟踪捕获了tempdb数据库中的异常,该异常表示“this”无法更改架构“dbo”,因为它不存在或您没有权限。“”

我的数据库项目中有一个包含“创建XML模式集合”的脚本,该脚本由于权限不足而失败


由于此异常,部署过程决定生成所有这些“删除”“发布脚本中的语句。当我授予用户帐户dbo访问tempdb和重新生成发布脚本的权限后,drop语句就离开了发布脚本。

我终于找到了数据库部署在系统管理员和非系统管理员中表现不同的原因。当我从VisualStudio数据库发布中“生成脚本”时,我运行了一个sql跟踪

在非sa发布期间,跟踪捕获了tempdb数据库中的异常,该异常表示“this”无法更改架构“dbo”,因为它不存在或您没有权限。“”

我的数据库项目中有一个包含“创建XML模式集合”的脚本,该脚本由于权限不足而失败

由于此异常,部署过程决定在发布脚本中生成所有这些“Drop”语句。我授予用户帐户dbo访问tempdb和重新生成的发布脚本的权限后,Drop语句就离开了发布脚本