Configurare l'opzione di configurazione del server locksConfigure the locks Server Configuration Option

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento si illustra come configurare l'opzione di configurazione del server locks in SQL Server 2017SQL Server 2017 utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to configure the locks server configuration option in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Con l'opzione locks è possibile impostare il numero massimo di blocchi disponibili e pertanto limitare la quantità di memoria utilizzata per i blocchi stessi dal Motore di database di SQL ServerSQL Server Database Engine .The locks option sets the maximum number of available locks, thereby limiting the amount of memory the Motore di database di SQL ServerSQL Server Database Engine uses for them. L'impostazione predefinita è 0, che consente al Motore di databaseDatabase Engine di allocare e deallocare le strutture di blocco in modo dinamico, in base alle variazioni dei requisiti di sistema.The default setting is 0, which allows the Motore di databaseDatabase Engine to allocate and deallocate lock structures dynamically, based on changing system requirements.

Importante

Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Non usare questa funzionalità in un nuovo progetto di sviluppo e modificare non appena possibile le applicazioni in cui è attualmente implementata.Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Indicazioni Recommendations

  • Questa opzione è avanzata e la relativa modifica è riservata ad amministratori di database esperti o a tecnici dotati di certificazione per SQL ServerSQL Server .This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server technician.

  • Quando si avvia il server con l'opzione locks impostata su 0, viene acquisita dal Motore di databaseDatabase Engine una quantità di memoria sufficiente per un pool iniziale di 2.500 strutture di blocco tramite Gestione blocchi.When the server is started with locks set to 0, the lock manager acquires sufficient memory from the Motore di databaseDatabase Engine for an initial pool of 2,500 lock structures. Quando il pool di blocchi è esaurito, viene acquisita memoria aggiuntiva per il pool.As the lock pool is exhausted, additional memory is acquired for the pool.

    In genere, se per il pool di blocchi è necessaria una quantità di memoria superiore a quella disponibile nel pool di memoria del Motore di databaseDatabase Engine ed è disponibile ulteriore memoria del computer, ovvero non è stata raggiunta la soglia max server memory , tale memoria viene allocata dinamicamente dal Motore di databaseDatabase Engine per soddisfare la richiesta di blocchi.Generally, if more memory is required for the lock pool than is available in the Motore di databaseDatabase Engine memory pool, and more computer memory is available (the max server memory threshold has not been reached), the Motore di databaseDatabase Engine allocates memory dynamically to satisfy the request for locks. Se tuttavia questa modalità di allocazione di memoria determina il paging a livello del sistema operativo, ad esempio se un'altra applicazione eseguita sul computer in cui si trova l'istanza di SQL ServerSQL Server sta utilizzando la memoria disponibile, lo spazio aggiuntivo per i blocchi non viene allocato.However, if allocating that memory would cause paging at the operating system level (for example, if another application is running on the same computer as an instance of SQL ServerSQL Server and using that memory), more lock space is not allocated. Il pool di blocchi dinamico può acquisire fino al 40% della memoria disponibile per il Motore di databaseDatabase Engine.The dynamic lock pool does not acquire more than 60 percent of the memory allocated to the Motore di databaseDatabase Engine. Se il pool di blocchi raggiunge il 60% della memoria acquisita da un'istanza del Motore di databaseDatabase Engineoppure se nel computer non è disponibile ulteriore memoria, eventuali richieste aggiuntive di blocchi generano un errore.After the lock pool has reached 60 percent of the memory acquired by an instance of the Motore di databaseDatabase Engine, or no more memory is available on the computer, further requests for locks generate an error.

    La configurazione consigliata prevede che SQL ServerSQL Server utilizzi i blocchi dinamicamente.Allowing SQL ServerSQL Server to use locks dynamically is the recommended configuration. È tuttavia possibile impostare l'opzione locks e impedire l'allocazione dinamica di risorse di blocco da parte di SQL ServerSQL Server .However, you can set locks and override the ability of SQL ServerSQL Server to allocate lock resources dynamically. Se l'opzione locks è impostata su un valore diverso da 0, il Motore di databaseDatabase Engine è in grado di allocare solo il numero di blocchi corrispondente al valore specificato in locks.When locks is set to a value other than 0, the Motore di databaseDatabase Engine cannot allocate more locks than the value specified in locks. Aumentare tale valore se in SQL ServerSQL Server viene visualizzato un messaggio indicante che è stato superato il numero di blocchi disponibili.Increase this value if SQL ServerSQL Server displays a message that you have exceeded the number of available locks. Poiché ogni blocco richiede memoria (96 byte), l'aumento del valore può richiedere anche l'aumento della quantità di memoria destinata al server.Because each lock consumes memory (96 bytes per lock), increasing this value can require increasing the amount of memory dedicated to the server.

  • L'opzione locks influisce inoltre sul momento in cui si verifica l'escalation dei blocchi.The locks option also affects when lock escalation occurs. Se l'opzione locks è impostata su 0, l'escalation dei blocchi si verifica quando la memoria utilizzata dalle strutture di blocco correnti raggiunge il 40% del pool di memoria del Motore di databaseDatabase Engine .When locks is set to 0, lock escalation occurs when the memory used by the current lock structures reaches 40 percent of the Motore di databaseDatabase Engine memory pool. Se l'opzione locks è impostata su un valore diverso da 0, l'escalation dei blocchi si verifica quando il numero dei blocchi raggiunge il 40% del valore specificato per l'opzione locks.When locks is not set to 0, lock escalation occurs when the number of locks reaches 40 percent of the value specified for locks.

Sicurezza Security

Autorizzazioni Permissions

Le autorizzazioni di esecuzione per sp_configure senza alcun parametro o solo con il primo parametro vengono assegnate per impostazione predefinita a tutti gli utenti.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. Per eseguire sp_configure con entrambi i parametri per la modifica di un'opzione di configurazione o per l'esecuzione dell'istruzione RECONFIGURE, a un utente deve essere concessa l'autorizzazione a livello di server ALTER SETTINGS.To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del server sysadmin e serveradmin .The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per configurare l'opzione locksTo configure the locks option

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su un server e scegliere Proprietà.In Object Explorer, right-click a server and select Properties.

  2. Fare clic sul nodo Avanzate .Click the Advanced node.

  3. Nell'area Parallelismodigitare il valore desiderato per l'opzione locks .Under Parallelism, type the desired value for the locks option.

    L'opzione locks consente di impostare il numero massimo di blocchi disponibili e pertanto limitare la quantità di memoria utilizzata per i blocchi stessi da SQL ServerSQL Server .Use the locks option to set the maximum number of available locks, thereby limiting the amount of memory SQL ServerSQL Server uses for them.

Utilizzo di Transact-SQL Using Transact-SQL

Per configurare l'opzione locksTo configure the locks option

  1. Connettersi al Motore di databaseDatabase Engine.Connect to the Motore di databaseDatabase Engine.

  2. Dalla barra Standard fare clic su Nuova query.From the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute. Questo esempio mostra come usare sp_configure per impostare il valore dell'opzione locks su 20000per poter stabilire il numero di blocchi disponibili a tutti gli utenti.This example shows how to use sp_configure to set the value of the locks option to set the number of locks available for all users to 20000.

Use AdventureWorks2012 ;  
GO  
sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'locks', 20000;  
GO  
RECONFIGURE;  
GO  

Per altre informazioni, vedere Opzioni di configurazione del server (SQL Server).For more information, see Server Configuration Options (SQL Server).

Completamento: Dopo la configurazione dell'opzione locks Follow Up: After you configure the locks option

Per poter rendere effettiva l'impostazione, è necessario riavviare il server.The server must be restarted before the setting can take effect.

Vedere ancheSee Also

RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
Opzioni di configurazione del server (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL)sp_configure (Transact-SQL)