In SQL Server, la gestione dei permessi è fondamentale per garantire che gli utenti abbiano accesso solo alle risorse necessarie, prevenendo potenziali rischi di sicurezza. I permessi vengono assegnati tramite ruoli predefiniti e comandi T-SQL, con l'obiettivo di garantire che ogni utente possa operare solo nei limiti della sua autorità.
Il ruolo db_owner fornisce agli utenti l'accesso amministrativo completo al database, permettendo loro di eseguire qualsiasi operazione all'interno di esso. Questo è un ruolo che generalmente viene assegnato a utenti di fiducia che necessitano di un controllo totale sul database, ma che non devono gestire altre configurazioni a livello di server. Al contrario, il ruolo public è il ruolo predefinito, che viene assegnato a tutti gli utenti senza specifici permessi. Sebbene il ruolo public non conferisca di per sé alcun permesso, gli amministratori possono modificarne i permessi e assegnarli ad altri ruoli o utenti, se necessario.
In ambienti più complessi come SQL Managed Instance e SQL Server, esistono ruoli di server predefiniti che offrono diversi livelli di accesso. Ad esempio, sysadmin consente un accesso completo a tutte le attività sul server, mentre il ruolo securityadmin permette di gestire i logins del server e le relative autorizzazioni. Altri ruoli come processadmin e diskadmin forniscono permessi specifici per gestire i processi SQL Server e i dispositivi di backup.
Tuttavia, in SQL Database di Azure, la gestione dei ruoli e dei permessi è più semplificata rispetto alle versioni tradizionali di SQL Server. Azure SQL Database non ha un vero e proprio "server" fisico, ma un server logico, e i ruoli predefiniti a livello di server sono limitati. I principali ruoli di server in questo contesto sono dbmanager, che consente di creare nuovi database, e loginmanager, che permette di gestire i logins del server.
La gestione dei permessi si basa su quattro operazioni principali: SELECT, che permette di visualizzare i dati; INSERT, che consente di aggiungere nuovi dati; UPDATE, che permette di modificare i dati esistenti; e DELETE, che consente di eliminare i dati. Questi permessi sono gli stessi su tutte le piattaforme SQL, sia locali che su cloud. Tuttavia, ci sono anche permessi aggiuntivi che permettono agli amministratori di eseguire operazioni più avanzate, come CONTROL, che conferisce diritti completi su un oggetto, o REFERENCES, che consente di visualizzare le chiavi esterne di un oggetto.
Per gestire i permessi, gli amministratori possono usare comandi T-SQL o strumenti grafici come SQL Server Management Studio (SSMS). La sintassi di base per concedere o revocare permessi tramite T-SQL è semplice e diretta. Ad esempio, il comando GRANT permette di concedere permessi a un utente o a un ruolo su un determinato oggetto del database. Al contrario, i comandi REVOKE e DENY vengono utilizzati rispettivamente per rimuovere o negare esplicitamente l'accesso a una risorsa. La differenza tra i due comandi è che il REVOKE elimina un permesso, ma non impedisce che venga riacquistato da un altro ruolo o utente, mentre il DENY impedisce completamente l'accesso, anche se altri permessi vengono concessi tramite altri canali.
Per configurare i permessi, è possibile utilizzare anche SSMS, che offre una comoda interfaccia grafica per gestire i permessi degli utenti e dei ruoli. Gli amministratori possono assegnare o revocare permessi utilizzando caselle di controllo, e possono anche specificare se un utente ha il permesso di concedere quel permesso a sua volta ad altri. SSMS semplifica anche la gestione dei permessi a livello di oggetti specifici del database, come le tabelle, le viste e le procedure memorizzate.
Infine, è importante notare che i permessi possono provenire da diverse fonti, e la loro combinazione determina i permessi effettivi di un utente. Quando un permesso è ereditato da più ruoli o utenti, la somma dei permessi è cumulativa, ma nel caso di conflitti, un permesso esplicitamente negato tramite il comando DENY avrà sempre la precedenza su un permesso concesso.
Endtext
Come Configurare e Ottimizzare le Risorse in SQL Server e Azure SQL
La gestione e l'ottimizzazione delle risorse in SQL Server e nelle istanze gestite di Azure SQL è una componente fondamentale per garantire il buon funzionamento e la scalabilità delle applicazioni. Uno degli strumenti principali per il controllo delle risorse è il Resource Governor, che permette agli amministratori di gestire e allocare in modo più preciso le risorse del server, evitando che un carico eccessivo di lavoro possa compromettere le prestazioni di altre operazioni.
Il Resource Governor non è attivo di default in SQL Server e nelle istanze gestite di Azure SQL, ma può essere abilitato facilmente tramite SQL Server Management Studio (SSMS). Per attivarlo, è necessario navigare nella pagina Management in Object Explorer, fare clic destro su Resource Governor, selezionare Properties e, infine, abilitare la casella "Enable Resource Governor". In alternativa, è possibile utilizzare il comando T-SQL:
L'attivazione del Resource Governor consente agli amministratori di creare gruppi di lavoro che controllano l'allocazione delle risorse tra i diversi carichi di lavoro sullo stesso server. Questo viene realizzato tramite pools di risorse, che riservano una parte delle risorse del server, come CPU, memoria e storage, per ogni pool, mentre un'altra parte delle risorse è condivisa tra i vari pool per massimizzare l'utilizzo complessivo.
Un altro aspetto importante nella gestione delle risorse riguarda la configurazione a livello di database. Se molte delle configurazioni di SQL Server sono applicabili a livello di server, molte delle funzionalità più recenti consentono una configurazione specifica per ogni database. Ciò permette agli amministratori di personalizzare il comportamento di SQL Server per singole basi di dati in modo molto più preciso rispetto alle configurazioni a livello di server.
Alcuni comandi T-SQL consentono di configurare queste impostazioni a livello di database. Per esempio, il comando ALTER DATABASE consente di configurare parametri cruciali come il modello di recupero del database, le opzioni di tuning automatico, la manutenzione degli indici e la gestione delle statistiche. Inoltre, è possibile attivare o disattivare il Query Store, che consente di raccogliere informazioni sulle prestazioni delle query, e configurare l'isolamento snapshot, che definisce la posizione degli snapshot del database usati durante le transazioni.
Alcuni parametri, che precedentemente erano configurabili solo a livello di server, ora possono essere modificati a livello di database tramite il comando ALTER DATABASE SCOPED CONFIGURATION. Tra questi troviamo il Massimo Grado di Parallelismo (MaxDOP), che imposta il numero massimo di processori che il database può utilizzare, e l'Estrazione di Cardinalità Legacy, che consente di tornare al vecchio stimatore di cardinalità se quello nuovo dovesse causare una perdita di prestazioni. Altri parametri configurabili includono la gestione dei piani delle query e la configurazione delle cache di identità.
Una delle sfide principali nell’ottimizzazione delle risorse riguarda la gestione della scalabilità. Azure offre diverse tier di servizio che consentono agli amministratori di adattare la capacità delle risorse in base alle esigenze, senza dover prendere decisioni irrevocabili prima di creare macchine virtuali o server SQL. Azure SQL consente di scalare facilmente le risorse computazionali e di archiviazione in base alle fluttuazioni dei carichi di lavoro, come nel caso di picchi stagionali di vendite. Per quanto riguarda la scalabilità dei servizi di calcolo, la modifica delle risorse richiede generalmente un riavvio del server, mentre l'espansione dello storage non comporta alcun riavvio.
I modelli di acquisto per le istanze PaaS di SQL, come il modello vCore, sono ideali per installazioni più grandi e flessibili. Il modello vCore offre tre livelli di servizio principali: General Purpose, che è il più economico e adatto a carichi di lavoro tipici, Business Critical, che offre prestazioni I/O superiori e maggiore disponibilità, e Hyperscale, che è progettato per carichi di lavoro estremamente scalabili con limiti massimi molto elevati.
Inoltre, le opzioni di calcolo per questi livelli includono modalità provisioned e serverless. La modalità provisioned assegna risorse al server in modo continuo, mentre la modalità serverless assegna le risorse solo quando necessarie e può mettere in pausa il database quando non è in uso, sospendendo i costi computazionali (ma non quelli di archiviazione).
Per quanto riguarda la gestione delle prestazioni delle query, l'introduzione del processamento intelligente delle query (IQP) in SQL Server 2017, 2019 e 2022 rappresenta una significativa evoluzione. Queste funzionalità sono ora integrate anche in Azure SQL Database e nelle istanze gestite di Azure SQL. L’IQP offre miglioramenti in vari aspetti delle prestazioni, risolvendo criticità precedenti e ottimizzando l'esecuzione delle query. Le funzionalità IQP sono disponibili a partire dal livello di compatibilità 110 e supportano anche le versioni più recenti di SQL Server. La compatibilità del database con questi livelli può essere visualizzata e modificata facilmente tramite SSMS o T-SQL.
Infine, la configurazione dei livelli di compatibilità è fondamentale per mantenere la retrocompatibilità con versioni precedenti di SQL Server, permettendo così una transizione graduale verso nuove funzionalità senza compromettere il funzionamento delle applicazioni esistenti.
L'abilità nell'ottimizzare la configurazione delle risorse, l'adozione di pratiche di scalabilità dinamica e l'uso delle nuove funzionalità di ottimizzazione delle query sono fondamentali per una gestione efficace delle risorse in ambienti SQL Server e Azure SQL. Gli amministratori devono quindi considerare attentamente le opzioni disponibili e scegliere quelle che meglio rispondono alle esigenze specifiche di prestazioni e budget.
Come si modella e si apprende il rischio geologico mediante il modello OHMM?
Qual è l'effetto della prevenzione del cancro attraverso l'attività fisica?
Perché l'emisfero settentrionale è più caldo dell'emisfero meridionale?
Quali sono le onde di primo e secondo suono e come emergono dal modello esteso a un fluido unico?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский