it-swarm.com.de

So beheben Sie den SQL Server-Fehler 1222: Entsperren Sie eine SQL Server-Tabelle

Ich arbeite in einer Datenbank, in der ich mit einem Datenladeprogramm Daten in eine Rohtabelle lade. Aber heute ist der Datenlader aus unbekannten Gründen hängen geblieben. Dann habe ich den Datenlader vom Windows Task Manager gestoppt. Aber dann habe ich erneut versucht, Daten in die RAW-Tabelle zu laden, aber festgestellt, dass sie gesperrt sind, und ich kann keine Operation darauf ausführen. Ich habe versucht, den SQL Server-Dienst neu zu starten, er wurde jedoch nicht behoben. Und ich habe keine Berechtigung, Prozesse auf diesem Server abzubrechen.

Unten sehen Sie die Meldung, die von SQL Server angezeigt wird.

Beim Ausführen einer Transact-SQL-Anweisung oder eines Stapels ist eine Ausnahme aufgetreten. (Microsoft.SqlServer.ConnectionInfo)

Programmort:

bei Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery (String sqlCommand, ExecutionTypes executionType)
bei Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery (StringCollection sqlCommands, ExecutionTypes executionType)
bei Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery (StringCollection-Abfragen)
bei Microsoft.SqlServer.Management.Smo.SqlSmoObject.ExecuteNonQuery (StringCollection-Abfragen, Boolean includeDbContext)
bei Microsoft.SqlServer.Management.Smo.NamedSmoObject.RenameImplWorker (String newName)
bei Microsoft.SqlServer.Management.Smo.NamedSmoObject.RenameImpl (String newName)

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

Zeitlimit für Sperranforderung überschritten. Entweder ist der Parameter @objname nicht eindeutig oder der beanspruchte @objtype (OBJECT) ist falsch. (.Net SqlClient Data Provider)


Servername: 162.44.25.59 Fehlernummer: 1222
Schweregrad: 16 Bundesland: 56
Prozedur: sp_rename Zeilennummer: 282

Meine SQL Server-Version ist 2008 R2.

69
user960340

Führen Sie im SQL Server Management Studio den folgenden Befehl aus, um Details zur aktiven Transaktion abzurufen

DBCC opentran()

Sie erhalten die Details der aktiven Transaktion und erhalten dann anhand der SPID der aktiven Transaktion die Details zur SPID mithilfe der folgenden Befehle

exec sp_who2 <SPID>
exec sp_lock <SPID>

Wenn SPID beispielsweise 69 ist, führen Sie den Befehl aus als

exec sp_who2 69
exec sp_lock 69

Jetzt können Sie diesen Prozess mit dem folgenden Befehl beenden

KILL 69

Ich hoffe das hilft :)

163

Es ist schon eine Weile her, aber das letzte Mal hatte ich etwas Ähnliches:

ROLLBACK TRAN

oder zu versuchen

COMMIT

was bereits getan wurde, löste alles auf, sodass ich die Dinge klären und wieder von vorne anfangen konnte.

19
shawty

Um dies zu verhindern, stellen Sie sicher, dass jede BEGIN TRANSACTION über COMMIT verfügt

Folgendes wird als erfolgreich bezeichnet, lässt jedoch nicht festgeschriebene Transaktionen zurück:

BEGIN TRANSACTION
BEGIN TRANSACTION
<SQL_CODE?
COMMIT

Wenn Sie Abfragefenster mit nicht festgeschriebenen Transaktionen schließen, werden Sie aufgefordert, Ihre Transaktionen festzuschreiben. Dadurch wird die Fehlermeldung 1222 im Allgemeinen behoben.

3
Paul Totzke

Ich hatte diese SQL-Verhaltenseinstellungen für die Ausführung von Optionsabfragen aktiviert: ANSI SET IMPLICIT_TRANSACTIONS überprüft. Bei der Ausführung Ihrer Abfrage, z. B. beim Erstellen, Ändern einer Tabelle oder einer gespeicherten Prozedur, müssen Sie sie COMMITEN.

Geben Sie einfach COMMIT ein und führen Sie es aus F5

0
Jerry Iriri