由于用户当前已登录,因此无法删除数据库用户。错误15434

时间:2015-04-28 06:14:23

标签: sql-server sql-server-2012

我在SQL Server 2012数据库中创建了用户sagar,并将其映射到XYZ数据库。一段时间后,我删除了XYZ数据库,现在我也不需要现有用户sagar。但是当我尝试从SQL Srever Management Studio中删除用户时。我收到以下异常

  

无法放弃登录' sagar'用户当前已登录。错误:15434

2 个答案:

答案 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
再次确保登录消失

现在删除该登录名。