You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server无法修改角色:错误15151问题求助

SQL Server 修改角色失败问题求助

报错信息

Msg 15151, Level 16, State 1, Line 31
Cannot alter the server role 'ReadPurchasingOnly', because it does not exist or you do not have permission.

执行的代码(含回滚点)

BEGIN TRANSACTION;

USE AdventureWorks2022;
GO

CREATE LOGIN Purchasing1
WITH PASSWORD ='2025WillBeBetter-right?',
DEFAULT_DATABASE=AdventureWorks2022,
CHECK_EXPIRATION=OFF,
CHECK_POLICY=ON

GO

CREATE USER Purchasing1
FROM LOGIN Purchasing1
WITH DEFAULT_SCHEMA = Purchasing
GO

SAVE TRANSACTION Save1;

BEGIN TRANSACTION;

CREATE ROLE ReadPurchasingOnly AUTHORIZATION [purchasing1];
GO

 
GRANT SELECT ON PURCHASING.ProductVendor TO ReadPurchasingOnly;
GRANT SELECT ON PURCHASING.PurchaseOrderDetail TO ReadPurchasingOnly;
GRANT SELECT ON PURCHASING.PurchaseOrderHeader TO ReadPurchasingOnly;
GRANT SELECT ON PURCHASING.ShipMethod TO ReadPurchasingOnly;
GRANT SELECT ON PURCHASING.Vendor TO ReadPurchasingOnly;
GO

 
ALTER SERVER ROLE ReadPurchasingOnly ADD MEMBER purchasing1;
GO

SAVE TRANSACTION Save2;

--ROLLBACK TRANSACTION 

每次执行上述代码都会触发报错。

环境与权限设置

本地环境

  • Windows 10(已启用开发者模式)
  • 防火墙已添加1433端口入站规则

软件版本

以管理员身份重新安装SQL Server 2020、SSMS v20.2,采用标准安装。

服务器级别登录属性

  • 已将sysadmin添加到服务器角色,Public默认选中
  • 数据库映射:已选择AdventureWorks数据库,添加db_accessadmin、db_owner、db_securityadmin角色,Public默认选中
  • 安全对象:已勾选alter any role,调整后问题仍存在

数据库级别设置

  • 默认架构为dbo,未修改
  • 拥有的架构:全选(Guest无法选中已取消)
  • 数据库角色成员:db_accessadmin、db_owner、db_securityadmin
  • 安全对象:无

已尝试的解决方法

  • 使用sa用户登录报错18456:用户'sa'登录失败
  • 尝试模拟sa用户,无权限
  • 尽可能提升所有权限
  • 执行SELECT * FROM fn_my_permissions(NULL, 'SERVER') GO;,返回50条结果,包含create/alter/impersonate/view等权限,甚至有'unsafe assembly'权限
  • 尝试过两篇Stack Overflow相关帖子的所有解决方法
  • 通过SSMS GUI操作时同样遇到问题

内容的提问来源于stack exchange,提问作者angie thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:55:12