如何解决SQL Server错误1222即解锁一个SQL Server表

我正在一个数据库中,我通过数据加载器加载一个原始表中的数据。 但是今天的数据加载程序由于未知的原因卡住了。 然后我停止从Windows任务pipe理器的数据加载器。 但是,我再次尝试加载原始表中的数据,但发现它被locking,我不能做任何操作。 我试过重新启动SQL Server服务,但没有解决。 而且我没有权限在这台服务器上终止进程。

以下是SQL Server显示的消息。

执行Transact-SQL语句或批处理时发生exception。 (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查询)
在Microsoft.SqlServer.Management.Smo.SqlSmoObject.ExecuteNonQuery(StringCollection查询,布尔includeDbContext)
在Microsoft.SqlServer.Management.Smo.NamedSmoObject.RenameImplWorker(String newName)
在Microsoft.SqlServer.Management.Smo.NamedSmoObject.RenameImpl(String newName)

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

超过locking请求超时时间。 参数@objname不明确,或者声明的@objtype(OBJECT)错误。 (.Net SqlClient数据提供程序)


服务器名称:162.44.25.59错误号:1222
严重性:16状态:56
过程:sp_rename行号:282

我的SQL Server版本是2008 R2。

在SQL Server Management Studio中,要查找活动事务的详细信息,请执行以下命令

DBCC opentran() 

您将获得活动事务的详细信息,然后从活动事务的SPID中使用以下命令获取有关SPID的详细信息

 exec sp_who2 <SPID> exec sp_lock <SPID> 

例如,如果SPID是69,则执行命令为

 exec sp_who2 69 exec sp_lock 69 

现在,您可以使用以下命令来终止该进程

 KILL 69 

我希望这有帮助 :)

这是一段时间,但最后一次我有类似的东西:

 ROLLBACK TRAN 

或试图

 COMMIT 

已经完成的事情已经解放了所有的东西,所以我能够清理干净,重新开始。

为了防止这种情况,确保每个BEGIN TRANSACTION都有COMMIT

以下将说成功,但会留下未提交的交易:

 BEGIN TRANSACTION BEGIN TRANSACTION <SQL_CODE? COMMIT 

closures具有未提交事务的查询窗口将提示您提交事务。 这通常会解决错误1222消息。