MSSQLSERVER_1204MSSQLSERVER_1204

DettagliDetails

Nome prodottoProduct Name SQL ServerSQL Server
ID eventoEvent ID 12041204
Origine eventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nome simbolicoSymbolic Name LK_OUTOFLK_OUTOF
Testo del messaggioMessage Text In questo momento l'istanza del Motore di database di SQL Server non è in grado di ottenere una risorsa LOCK.The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time. Eseguire nuovamente l'istruzione quando è presente un minor numero di utenti attivi.Rerun your statement when there are fewer active users. Chiedere all'amministratore del database di controllare la configurazione di memoria e di blocco per l'istanza o di verificare la presenza di transazioni con esecuzione prolungata.Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.

SpiegazioneExplanation

SQL ServerSQL Server non è in grado di ottenere una risorsa di blocco. cannot obtain a lock resource. L'errore può essere causato da uno dei motivi seguenti:This can be caused by either of the following reasons:

  • SQL ServerSQL Server non è in grado di allocare ulteriore memoria dal sistema operativo perché questa è già usata da altri processi oppure perché è stata configurata l'opzione Max Server Memory per il server in uso. cannot allocate more memory from the operating system, either because other processes are using it, or because the server is operating with the max server memory option configured.

  • In Gestione blocchi non viene utilizzato più del 60 percento della memoria disponibile per SQL ServerSQL Server.The lock manager will not use more than 60 percent of the memory available to SQL ServerSQL Server.

Azione dell'utenteUser Action

Se si sospetta che il motivo dell'errore sia l'impossibilità di SQL Server di allocare memoria sufficiente, procedere come segue:If you suspect that SQL Server cannot allocate sufficient memory, try the following:

  • Se le risorse vengono utilizzate da altre applicazioni oltre a SQL Server, provare ad arrestarne l'esecuzione o a eseguirle in un server distinto.If applications besides SQL Server are consuming resources, try stopping these applications or consider running them on a separate server. In questo modo verrà rilasciata memoria da altri processi di SQL Server.This will remove release memory from other processes for SQL Server.

  • Se è stata configurata l'opzione max server memory, aumentarne il valore impostato.If you have configured max server memory, increase max server memory setting.

Se si sospetta che in Gestione blocchi sia stata utilizzata la massima quantità di memoria disponibile, individuare la transazione che mantiene la maggior parte dei blocchi e interromperla.If you suspect that the lock manager has used the maximum amount of available memory identify the transaction that is holding the most locks and terminate it. Lo script seguente consente di individuare la transazione che presenta più blocchi:The following script will identify the transaction with the most locks:

SELECT request_session_id, COUNT (*) num_locks  
FROM sys.dm_tran_locks  
GROUP BY request_session_id   
ORDER BY count (*) DESC  

Individuare l'ID di sessione più elevato e interrompere la transazione corrispondente tramite il comando KILL.Take the highest session id, and terminate it using the KILL command.