SQL Server 不允许我更改角色

问题描述 投票:0回答:1

这是错误消息:

消息 15151,第 16 级,状态 1,第 31 行
无法更改服务器角色“ReadPurchasingOnly”,因为它不存在或您没有权限。

我尝试了这段代码(我添加了回滚点):

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 v 20.2。标准安装。

我的登录属性/服务器级别下的 SSMS:

  • 将 sysadmin 添加到我的服务器角色中。已选择公开。
  • 映射:选择 AdventureWorks 数据库,添加数据库角色为访问管理员、所有者、安全管理员。公开已被选中。
  • 尝试过安全,但没有任何效果。尽管如此,我仍然选中“改变任何角色”。

在数据库层面:

  • 默认模式是 dbo。没有改变,不知道会做什么。
  • 拥有的模式:选择全部,在来宾上获得回扣,因此处于未选择状态
  • 数据库角色成员资格:db_accessadmin、db_owner、db_secuarityadmin
  • 有价证券:什么都没有

我尝试过的:

  • 以不同用户登录。错误号:18456,用户“sa”登录失败。 (框架 Microsoft SqlClient 数据提供程序)
  • 冒充sa用户,不让我。 (未经许可)
  • 在我能找到的所有地方提升权限
  • 运行
    SELECT * FROM fn_my_permissions(NULL, 'SERVER') GO; 
    。 50 个结果,创建/更改/模拟/查看都在那里,甚至还有一个名为“不安全的程序集”的令人震惊的结果!
  • 此线程中的所有内容:无法在 MS SQL 中更改角色并授予自己权限
  • 引导我到这个线程,尝试了所有方法:无法获取有关 Windows NT 组/用户的信息 我还尝试过其他一些事情,但我没有做好笔记,所以我忘记了它们。
    错误消息仍然存在!

当我尝试使用 GUI 时: https://stackoverflow.com/posts/79333699

sql-server t-sql
1个回答
3
投票

我怀疑你想要:

ALTER ROLE
而不是
ALTER SERVER ROLE
,因为你在数据库中创建了一个角色,而不是在服务器级别。 另外,检查你的交易处理,看起来很奇怪,不需要多个交易和保存点

© www.soinside.com 2019 - 2024. All rights reserved.