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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器