Recuperare l’ownership della propria istanza Sql Server Express 2008
Cercando documentazione relativa al maintenance mode di Sql Server mi sono imbattuto in questo shell script (http://code.msdn.microsoft.com/addselftosqlsysadmin/) che permette di assegnare i privilegi di sysadmin sull’istanza locale di Sql Server Express all’utente con cui ci si è loggati sul proprio OS (o ad un qualsiasi altro specificato come parametro); per farlo, ovviamente, l’utente in oggetto dovrà far parte del gruppo “Administrators” locale.
Uno degli scenari dove questo script è particolarmente utile è il seguente:
quando sql server express viene installato da uno specifico utente, un secondo utente che proverà ad utilizzare il servizio, godendo dei soli privilegi minimi, non potrà creare database, tabelle o altre tipologie di oggetti. Questo accade perchè l’utente owner dell’installazione è il solo a cui è garantito il ruolo da sysadmin, ergo, il secondo utente pur facendo parte del gruppo degli amministratori del sistema operativo non potrà in alcun modo gestire l’istanza locale del rdbms light di Microsoft. Il problema diventa ancor più grave quando l’utente che ha effettuato l’installazione viene per qualsiasi motivo eliminato dal sistema non potento, quindi, utilizzarlo per poter riassegnare manualmente ad altri utenti il ruolo da sysadmin.
Ai tempi di Sql Server Express 2005, Microsoft aveva deciso di garantire il ruolo da sysadmin a tutto il gruppo degli amministratori locali del OS permettendo, quindi, agli utenti di avere l’ownership dell’istanza in maniera praticamente trasparente. Putroppo, con l’introduzione del UAC su Windows Vista questa decisione ha introdotto problemi di usabilità generale ad esempio su Visual Studio. L’UAC, per sua natura, nascondendo il token di sicurezza da “Adminsitrator” al processo di Visual Studio non permetteva la gestione completa del server DB direttamente dalla GUI del IDE Microsoft: l’utente era quindi costretto a lanciare VS in “elevated mode” (per inciso col “Run as Administrator”) che è generalmente una pratica non consigliabile.
Lo script automatizza i seguenti steps:
- restart del servizio SQL Server con l’ozione –m (maintenance mode) che permette una singola connessione da un admin box (aggiunto automaticamente ed in maniera temporanea al ruolo sysadmin del server);
- connessione all’istanza SQL e aggiunta dell’utente specificato al ruolo sysadmin;
- restart del servizio SQL in modalità standard;
.. perfetto per “riguadagnare” la proprietà
del proprio server in pochissimi secondi.
Tags: administrator, maintenance mode, Microsoft, owner, shell script, SQL Server Express 2008, sysadmin
This entry was posted on mercoledì, dicembre 14th, 2011 at 4:41 pm and is filed under IT Pro, Microsoft, Sql Server, Tools. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.