15.7 SQL Server删除LOGIN(登录账户)

SQL Server删除登录账户

简介

语法:

DROP LOGIN login_name

在此语法中,在DROP LOGIN关键字之后指定要删除的登录名。

请注意,在登录时不能删除登录。如果登录名拥有安全的服务器级对象或SQL server代理作业,则也不能删除该登录名。

如果登录帐户映射到数据库用户,删除此登录,这些数据库用户将成为孤立用户。

示例

使用BikeStores数据库作为示例

1)DROP LOGIN简单示例

想创建一个登录账户jack:

CREATE LOGIN jack
WITH PASSWORD = 'iOvT84xn.';

然后删除jack:

DROP LOGIN jack;

登录jack没有任何依赖,所以直接就能删除了,这种情况一般是创建登录时使用了不当的登录名。

2)使用DROP LOGIN删除映射到数据库用户的登录名

首先,创建一个名为joe的新登录名:

CREATE LOGIN joe
WITH PASSWORD = 'NBgs23we$';

然后,为登录joe创建一个同名新用户:

CREATE USER joe
FOR LOGIN joe;

第三步,使用drop login语句删除登录joe:

DROP LOGIN joe;

然后,用户joe成为了孤立用户。

要获取当前数据库服务器中的所有孤立用户,使用以下查询:

SELECT
  dp.type_desc,
  dp.sid,
  dp.name AS user_name
FROM sys.database_principals AS dp
LEFT JOIN sys.server_principals AS sp
  ON dp.sid = sp.sid
WHERE sp.sid IS NULL
AND dp.authentication_type_desc = 'INSTANCE';

解决孤立用户问题

要解决孤立用户,可以使用数据库用户的SID重新创建丢失的登录。例如,以下语句使用用户joe的SID创建一个新的登录ocean:

CREATE LOGIN ocean
WITH PASSWORD = 'bNHXUYT321#',
	 SID = 0xC48461C284AE024EB42149BFDBCD18A8;

现在,用户joe可以登录到数据库服务器了。

如果已经有一个登录名,并且希望将其映射到孤立用户,可以使用ALTER USER语句。例如:

ALTER USER orphaned_user 
WITH LOGIN = login_name;

这是直接将用户映射到一个新的登录名。

总结

  • 使用DROP LOGIN语句从SQL Server中删除登录帐户。
  • DROP LOGIN无法删除已登录或拥有安全、服务器级对象或SQL server代理作业的登录帐户。
  • 删除映射到数据库用户的登录将使这些数据库用户成为孤儿。
posted @ 2023-01-30 14:19  平元兄  阅读(994)  评论(0编辑  收藏  举报