sqlserver数据库脱机时发生异常:由于无法在数据库 'SMS' 上放置锁,ALTER DATABASE 失败。请稍后再试。 ALTER DATABASE 语句失败。 (.Net SqlClient Data Provider)

sqlserver数据库脱机时发生异常,如下:

===================================

设置脱机 对于 数据库“SMS”失败。  (Microsoft.SqlServer.Smo)

------------------------------ 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2500.0+((KJ_PCU_Main).110617-0038+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=设置脱机+Database&LinkId=20476

------------------------------ 程序位置:

   在 Microsoft.SqlServer.Management.Smo.Database.SetOfflineImpl(Boolean offline)    在 Microsoft.SqlServer.Management.Smo.Database.SetOffline()    在 Microsoft.SqlServer.Management.SqlManagerUI.DatabaseOffline.DatabaseOfflineAction.DoAction(ProgressItemCollection actions, Int32 index)    在 Microsoft.SqlServer.Management.SqlStudio.Controls.ProgressItemCollection.DoWorkOnThread()

===================================

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

------------------------------ 程序位置:

   在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)    在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType)    在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries)    在 Microsoft.SqlServer.Management.Smo.Database.SetOfflineImpl(Boolean offline)

===================================

由于无法在数据库 'SMS' 上放置锁,ALTER DATABASE 失败。请稍后再试。 ALTER DATABASE 语句失败。 (.Net SqlClient Data Provider)

------------------------------ 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2550&EvtSrc=MSSQLServer&EvtID=5061&LinkId=20476

------------------------------ 服务器名称: (local) 错误号: 5061 严重性: 16 状态: 1 行号: 1

------------------------------ 程序位置:

   在 Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)    在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)

 解决办法:

通过如下指令,获取当前DB的Session,然后将对应的SPID Kill掉,之后再执行ALTER DATABASE 语句。

EXEC sp_who2;

KILL <SPID>;

原文地址:https://www.cnblogs.com/strayromeo/p/4315611.html