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>;