MS SQL: single user mode

MS SQL: single user mode

di Pubblicato: 2 Novembre 2019 0 commenti

L’altro giorno durante una copia di routine manuale di un server SQL Microsoft, qualcosa va storto e il database si mette in modalità single user mode, cioè una sorta di protezione per cui un solo utente (generalmente “sa” che sta per sql admin, ma questo non è un dato certo) può di fatto accedere al database.

Questo significa indirettamente che i servizi erogati sono bloccati e quindi anche gli applicativi ad esso correlati.

Inutile dire che riavviare il server SQL o i servizi non serve a nulla, alla ripartenza si ritroverà sempre nello stesso stato. Inoltre anche come “sa” il database non è consultabile, cioè non si vedranno gli oggetti, cioè tabelle, security eccetera.

Come se ne esce? la procedura si risolve con uno script, di fatto la cosa è un minimo complicata da spiegare, perché dobbiamo per prima cosa impostarci in modalità master, cioè una sorta di “super user”; trovare e uccidere tutte le connessioni, quindi anche quella del single user mode; impostare un deadlock (per evitare che qualcuno si re-impossessi dell’unico utente libero) e modificare le impostazioni del database affinché venga sovrascritta la modalità da single-user in multi-user.

Per fare questo andiamo da SQL Explorer in alto, sull’apice dell’albero, attiviamo con il tasto destro la console SQL dove potremo incollare il codice sottostante:

USE master
GO
DECLARE @DBNAME VARCHAR(255)
SET @DBNAME = 'mio_database_bloccato'
DECLARE @kill varchar(max) = '';
SELECT @kill = @kill + 'KILL ' + CONVERT(varchar(10), spid) + '; '
FROM master..sysprocesses 
WHERE spid > 50 AND dbid = DB_ID('DBNAME')
EXEC(@kill);

GO
SET DEADLOCK_PRIORITY HIGH
ALTER DATABASE [DBNAME] SET MULTI_USER WITH NO_WAIT
ALTER DATABASE [DBNAME] SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO

Prima di avviarlo abbiate cura di modificare il parametro alla quarta riga, dove cambieremo “mio_database_bloccato” con il nome del vostro database.

La procedura dovrebbe essere rapidissima e successivamente dovreste essere in grado di accedere voi, come utenti ed applicativi, ad SQL come di consueto.

Libri che ti consiglio sull'argomento

Alcuni titoli che ho trovato utili come manuale tecnico per questo articolo

Vuoi dire o aggiungere qualcosa?

sezione commenti aperta al pubblico

Non ci sono ancora commenti!

Puoi essere il primo a commentare.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.