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代理作业的登录帐户。- 删除映射到数据库用户的登录将使这些数据库用户成为孤儿。