star gate Numero massimo di connessioni contemporanee e DAC - Francesco Quaratino

Numero massimo di connessioni contemporanee e DAC

SQL Server 2005 Express Edition, così come il predecessore Desktop Edition, è spesso oggetto di fraintendimenti circa il licensing e le limitazioni. Fra queste ultime, la più più gettonata è forse "il numero di connessioni contemporanee consentite" che secondo alcuni è limitato a poche unità o comunque inferiore a quello delle altre edition. In realtà, esiste un numero massimo (teorico) di connessioni ma è indipendente dalla edition. Tale tetto massimo è pari a 32.767, come si può evincere spulciando fra i risultati restituiti della stored procedure di sistema sys.sp_configure (dopo aver abilitato la visualizzazione delle 'advanced options'):

EXEC sys.sp_configure N'show advanced options', N'1' 
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure
GO


l'opzione in questione è 'user connections'. Il 'run value' uguale a 0 (zero) indica che il numero di connessioni contemporanee consentito è pari al massimo espresso da 'maximum'. Un risultato (forse meglio leggibile) lo si ha interrogando la sys.configurations.

select * from sys.configurations where name='user connections'


E se volessimo limitare noi il numero di connessioni possibili è possibile farlo sempre con la sys.sp_configure e poi riavviare il serivizio, per esempio se volessimo portarlo a 10:

EXEC sys.sp_configure N'show advanced options', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'user connections', N'10'
GO
RECONFIGURE WITH OVERRIDE
GO
--a questo punto riavvia il servizio per rendere effittiva la modifica


La conseguenza sarà un errore (più o meno esplicativo) restituito alla 11-esima connessione che se avvenisse con SQLCMD restituirà:


HResult 0x2745, Level 16, State 1
TCP Provider: An established connection was aborted by the software in your host machine.
Sqlcmd: Error: Microsoft SQL Native Client : Communication link failure.


mentre col Managemente Studio:

A connection was successfully estabilished with the server, but then an error occured during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) (Microsoft SQL Server, Error: 233)


A questo punto l'unico modo per connettersi è sfruttare la "Dedicated Administrator Connection (DAC)", ovvero la connessione di "servizio" realizzabile con SQLCMD da un sysadmin, per es.:

> SQLCMD -A

Ricordo che la DAC è possibile solo se è abilitata attraverso il tool "SQL Server 2005 Surface Configuration (for features)" o da T-SQL:

EXEC sys.sp_configure N'remote admin connections', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO

 

Per riportare il limite al massimo di 32.767:


EXEC sys.sp_configure N'show advanced options', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'user connections', N'0'
GO
RECONFIGURE WITH OVERRIDE
GO
--a questo punto riavvia il servizio per rendere effittiva la modifica

Comments

No Comments