SQL Server中修改数据库所有者的2种方法
2021/8/5 2:06:39
本文主要是介绍SQL Server中修改数据库所有者的2种方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SQL Server中修改数据库所有者的2种方法
在MS SQL SERVER中,我们有时候会碰到下面这种数据库,所有者是登录数据库的用户,如下图,但我们却没有办法直接在数据库管理工具中直接修改数据库所有者。这样会给我们后继的一些操作带来不便,至少对MitchellChu我来说是非常不便的,因为我后继想对登录用户的权限做些限制,因此需要寻求数据库所有者的修改办法。
修改数据库所有者的方法有两种:一种老方法,一种新方法 ——当然,都是在SQL语句中操作完成,我还没有发现可以直接在UI中操作的,如果有请告诉我。:P
1. 在以前数据库修改的办法是使用sp_changedbowner来进行的,如下方法:
1 2 3 4 5 |
USE UserTest
GO
EXEC sp_changedbowner 'username'
GO
|
该方法直接将数据库的所有者改变成username,当然,更详细的说明请参照SQL帮助。
但是该方法将在后继的新版本被删除,也就是说,在新版本出来(2012)之后,这个修改方法将不能使用。微软的官方是这么说的:
那么要改变数据库的所有者使用什么方式呢?
2. 早在SQL Server 2005的时候,MS SQL Server就已经提供了一个新的方法来修改数据库所有者:ALTER AUTHORIZATION
新的方法可以更改安全对象的所有权,这里的安全对象不仅限于数据库所有者一项,还有很多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/*使用方法*/
ALTER AUTHORIZATION
ON [ <entity_type> :: ] entity_name
TO { SCHEMA OWNER | principal_name }
<entity_type> ::=
{
Object | Type | XML Schema Collection | Fulltext Catalog | Schema
| Assembly | Role | Message Type | Contract | Service
| Remote Service Binding | Route | Symmetric Key | Endpoint
| Certificate | Database
}
/*
<entity_type> ::
更改其所有者的实体的类。Object 是默认值。
entity_name
实体名。
principal_name
将拥有实体的主体名称。
ALTER AUTHORIZATION 可用于更改任何具有所有者的实体的所有权。数据库包含的实体的所有权,可以传递给任何数据库级的主体。服务器级实体的所有权只能传递给服务器级主体。
*/
|
比如在这里,我们需要修改所有者,那么我们用下面代码即可完成:
1 2 3 4 5 6 |
ALTER AUTHORIZATION ON DATABASE ::DatabaseName TO UserName
GO
/*
DatabaseName就是数据库名称
UserName是用户名称
*/
|
使用新的方式,我们无需Use 数据库名称,在使用上比sp_changedbowner更方便些。
转载于Mitchell Chu's Blog,谢谢!
这篇关于SQL Server中修改数据库所有者的2种方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)