Как решить SQL Server Ошибка 1222 Т.е. разблокировать таблицу SQL Server - PullRequest
68 голосов
/ 24 ноября 2011

Я работаю в базе данных, где я загружаю данные в необработанную таблицу с помощью загрузчика данных. Но сегодня загрузчик данных застрял по неизвестным причинам. Затем я остановил загрузчик данных из диспетчера задач Windows. Но затем я снова попытался загрузить данные в необработанную таблицу, но обнаружил, что она заблокирована, и я не могу выполнить с ней никаких операций. Я попытался перезапустить службу SQL Server, но она не была решена. И у меня нет разрешения убивать процессы на этом сервере.

Ниже приведено сообщение, отображаемое SQL Server.

Исключительная ситуация при выполнении оператора Transact-SQL или партия. (Microsoft.SqlServer.ConnectionInfo)

Расположение программы:

в Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery (String sqlCommand, ExecutionTypes executeType)
в Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery (StringCollection sqlCommands, ExecutionTypes executeType)
в 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)

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

Превышен период ожидания запроса блокировки. Либо параметр @objname является неоднозначным или заявленный @objtype (OBJECT) неверен. (.Сеть SqlClient Data Provider)


Имя сервера: 162.44.25.59 Номер ошибки: 1222
Степень тяжести: 16 Состояние: 56
Процедура: sp_rename Номер строки: 282

Моя версия SQL Server - 2008 R2.

Ответы [ 4 ]

162 голосов
/ 28 февраля 2014

В 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

Надеюсь, это поможет:)

19 голосов
/ 25 ноября 2011

Это было давно, но в прошлый раз у меня было нечто похожее:

ROLLBACK TRAN

или пытается

COMMIT

то, что уже было сделано бесплатно, разобралось со всем, так что я смог все прояснить и начать заново.

3 голосов
/ 28 января 2016

Чтобы предотвратить это, убедитесь, что в каждой НАЧАЛО СДЕЛКИ есть COMMIT

Следующее сообщение будет успешным, но оставит незафиксированные транзакции:

BEGIN TRANSACTION
BEGIN TRANSACTION
<SQL_CODE?
COMMIT

Закрытие окна запросов с незафиксированными транзакциями предложит вам зафиксировать транзакции. Это обычно разрешит сообщение об ошибке 1222.

0 голосов
/ 27 июня 2019

У меня были включены эти параметры поведения SQL при выполнении запроса параметров: проверено ANSI SET IMPLICIT_TRANSACTIONS.При выполнении вашего запроса, например, создания, изменения таблицы или хранимой процедуры, вы должны его УДЕЛИТЬ.

Просто введите COMMIT и выполните его F5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...