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代理作业的登录帐户。- 删除映射到数据库用户的登录将使这些数据库用户成为孤儿。
分类: SQL Server
漫思
浙公网安备 33010602011771号