首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行sp_changedbowner SP的最小权限

执行sp_changedbowner SP的最小权限
EN

Database Administration用户
提问于 2017-09-29 18:03:27
回答 1查看 2K关注 0票数 2

db_owner权限是否足以执行sp_changedbowner

我希望更改RDS SQL实例的数据库所有者。我是DB的所有者,仍然不能作为主用户执行sp_changedbowner

我想知道执行sp_changedbownerALTER AUTHORIZATION命令的最低权限是什么。

EN

回答 1

Database Administration用户

发布于 2017-09-30 02:25:42

我将用一个演示来展示这个。很可能在您的情况下,您缺少了CONTROL SERVER特权。

有关这一主题的好读物将是:

基本的服务器安全概念:所有权、控制权、所有权:Laurentiu Cristofor

在具有sysadmin特权的帐户下运行以下代码。

代码语言:javascript
运行
复制
USE [master];
GO
--creating a new database
CREATE DATABASE [testpermission];
GO
--creating a SQL login
CREATE LOGIN [ownerone] WITH PASSWORD=N'ownerone', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;
GO
--making the new user owner of database
USE [master]
GO
ALTER AUTHORIZATION ON DATABASE::testpermission TO ownerone;  
GO
--checking the new owner
SELECT suser_sname(owner_sid) FROM sys.databases WHERE NAME = 'testpermission';
GO

您将看到新的所有者名为ownerone

现在创建另一个登录名。

代码语言:javascript
运行
复制
USE [master]
GO
CREATE LOGIN [newowner] WITH PASSWORD=N'newowner', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;
GO

现在以ownerone身份登录并执行下面的语句,以赋予newowner所有权。

代码语言:javascript
运行
复制
ALTER AUTHORIZATION ON DATABASE::testpermission TO newowner; 

您将得到以下错误消息:

Msg 15151,级别16,状态1,第1行找不到主体'newowner',因为它不存在,或者您没有权限。

授予ownerone登录CONTROL SERVER权限。

代码语言:javascript
运行
复制
USE [master]
GO
GRANT CONTROL SERVER TO [ownerone];
GO

重复以下操作,现在您将能够将所有权更改为newowner

代码语言:javascript
运行
复制
ALTER AUTHORIZATION ON DATABASE::testpermission TO newowner; 

清理代码。

代码语言:javascript
运行
复制
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'testpermission'
GO
USE [master]
GO
DROP DATABASE [testpermission]
GO
DROP LOGIN [newowner]
GO
DROP LOGIN [ownerone]
GO
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/187302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档