在 SQL Server 2012 中使用 SP_AddRole 添加角色时,数据库中已有一个名为“Test”的对象

Posted

技术标签:

【中文标题】在 SQL Server 2012 中使用 SP_AddRole 添加角色时,数据库中已有一个名为“Test”的对象【英文标题】:There is already an object named "Test" in the database while adding a role using SP_AddRole in SQL Server 2012 【发布时间】:2021-11-23 01:02:52 【问题描述】:

我正在尝试使用以下命令在 SQL Server 2016 的主数据库中添加一个角色:

SP_AddRole 'test'

我收到此错误:

数据库中已经有一个名为“test”的对象。

我检查了我的主数据库中的扩展角色,我发现我的主数据库中没有名称为“test”的角色。

我仍然尝试使用以下查询删除该角色:

Drop Role 'Test'

我收到此错误:

无法删除该角色,因为它不存在或您没有权限

当我尝试使用以下查询更改角色时:

Alter Role Add Member "Domain\userName" 

我得到了与以下相同的错误:

无法更改角色,因为它不存在或您没有权限。

注意:我拥有 SQL Server 和主数据库的所有权限和特权。

有人可以建议可以做些什么来解决这个问题吗?

我无法更改角色的名称,因为使用此名称创建角色对我的应用程序非常重要。

【问题讨论】:

你考虑过你可能没有权限吗? 是的,我拥有 SQL 服务器和数据库的完全权限 【参考方案1】:

在那个 SQL Server 数据库中已经创建了一个 SCHEMA。

我已删除该架构

DROP SCHEMA Test

然后下面的 SQL 查询起作用了。

SP_AddRole 'Test'

当我创建角色时,会创建一个具有相同名称的默认架构,当我展开架构时它是可见的。

当我尝试删除角色时,我需要先删除架构,然后删除角色。

即使存在同名的架构(但没有角色),SQL Server 也不允许我创建同名的新角色。

参考here

【讨论】:

以上是关于在 SQL Server 2012 中使用 SP_AddRole 添加角色时,数据库中已有一个名为“Test”的对象的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2012 SP_HELPTEXT额外行问题

在 SQL Server 2012 中使用 SP_AddRole 添加角色时,数据库中已有一个名为“Test”的对象

SQL Server 2008 R2升级到SQL Server 2012 SP1

Northwind数据库不能在SQL Server 2012上创建

使用 SQL Server sp_send_dbmail 从 java 发送电子邮件

sql server 2008 r2 sp1 怎么看版本