我在SQL Server 2012数据库中创建了用户sagar
,并将其映射到XYZ
数据库。一段时间后,我删除了XYZ
数据库,现在我也不需要现有用户sagar
。但是当我尝试从SQL Srever Management Studio中删除用户时。我收到以下异常
无法放弃登录' sagar'用户当前已登录。错误:15434
答案 0 :(得分:37)
通过识别用户的session_id,可以在终止会话后删除用户。
SELECT session_id
FROM sys.dm_exec_sessions
WHERE login_name = 'sagar'
KILL 51 --51 is session_id here, you may get different id
现在您可以通过使用sql server management studio选项执行以下查询(或)来删除登录。
DROP LOGIN 'sagar'
答案 1 :(得分:0)
如何删除自己作为登录名。例如。主机名更改后,您可能想要执行此操作,以便Sql Server在旧hosthame下记录您的登录名。
登录到SSMS。选择“ sa”帐户,然后将密码更改为您会记住的密码。
关闭SSMS,然后重新启动,但这次以“ sa”身份登录。选择要删除的登录名,右键单击以删除。
您可能会被告知Login拥有一个或多个数据库。
Login 'hostname\The Login' owns one or more database(s).
Change the owner of the databases before dropping the logon. [MS Sql Server Error 15174]
要列出每个数据库的所有者:
select suser_sname(owner_sid) from sys.databases
要将每个数据库的所有者更改为“ sa”
EXEC sp_MSforeachdb 'EXEC [?]..sp_changedbowner ''sa'' '
<-与我一样,此sp_MSforeachdb可能会失败一两次。就我而言,因为该数据库是单用户。将流氓数据库更改为多用户可解决此问题。然后我再次运行EXEC sp_MSforeachdb...。
要检查,请运行
select suser_sname(owner_sid) from sys.databases
再次确保登录消失
现在删除该登录名。