SQL Server

SQL Server SQL Server e' il sistema di gestione di database relazionale (RDBMS) robusto e versatile sviluppato da Microsoft.

SQL Server offre un ricco set di caratteristiche e capacita' che lo rendono un RDBMS potente e versatile:

Lo scopo di questa pagina e' quella di introdurre le funzionalita' e caratteristiche di SQL Server. Questo documento e' stato preparato utilizzando la versione 2022 di SQL Server ma e', mutatis mutandis, valido anche per le altre versioni.

Questo documento presenta diversi aspetti di SQL Server: Installazione, Edizioni, Utilizzo (SQL, Database/Utenti), Amministrazione, Architettura, Evoluzione, ...

Installazione

E' possibile installare SQL Server in locale o utilizzarlo in Cloud in molteplici modi. Il sito ufficiale riporta le principali modalita': Installazione SQL Server

Scelto il tipo di installazione la procedura guidata e' molto semplice ed in pochi minuti e' possibile utilizzare la base dati.

Editions

Oltre alla scelta sul tipo di deployment e' importante utilizzare l'edizione corretta di SQL Server. SQL Server e' disponibile in varie edizioni, ciascuna adattata ad esigenze ed a budget specifici:

La Developer e la Express Edition sono di uso gratuito ma hanno limiti sulla modalita' di utilizzo e/o sulle funzionalita' (eg. Express: size <10GB per database, CPU up to 4 core, RAM up to 1GB; funzionalita' limitate su Reporting e Analysis Services, SQL Server Agent non disponibile)

Utilizzo

E' possibile utilizzare SQL Server da linea di comando con sqlcmd ma su Windows e' piu' comune l'uso di interfacce grafiche. Microsoft SQL Server Management Studio (SSMS) e' lo strumento principale per la gestione ma consente anche di utilizzare direttamente la base dati con un interfaccia SQL: SQL Server - SSMS L'accesso da esterno avviene indicando l'host, la porta (default 1433) ed ovviamente username/password. La stringa di connessione JDBC e' semplice
  jdbc:sqlserver://serverName:1433
ma se e' installata un'istanza denominata di SQL Server e' necessario specificare il nome dell'istanza. Ecco quindi una stringa di connessione piu' completa:
  jdbc:sqlserver://serverName[\\instanceName]:port;databaseName=database;user=user;password=password;
Se l'istanza denominata utilizza una porta dinamica, il servizio SQL Server Browser deve essere attivo altrimenti si deve specificare il numero di porta esatto nella stringa di connessione. Per utilizzare l'autenticazione di Windows va aggiunto integratedSecurity=true;

L'SQL di SQL Server e' molto completo ed aderente agli standard piu' recenti. E' quindi molto semplice da utilizzare per chiunque conosca gia' l'SQL di un qualsiasi altro database relazionale.
Naturalmente si possono utilizzare innumerevoli client grafici come MS Visual Studio, Azure Data Studio, DBeaver, ... SQL Server - DBeaver

SQL

SQL Server ha un SQL vicino allo standard e fornisce un numero notevole di funzioni ulteriori ed e' uno dei database piu' ricchi da questo punto di vista.

Naturalmente sono presenti tutti gli statement DML SQL: SELECT, INSERT, DELETE, UPDATE; gli statement di DDL sono i classici CREATE, ALTER, DROP; la gestione degli accessi si effettua ccon GRANT e REVOKE ...
Sono supportati molteplici datatype e conversioni sono disponibili CTE, windows functions, ...
Per default e' attivo l'autocommit e l'isolation level e' Read Committed. E' possibile disabilitare l'autocommit e gestire le transazioni in modo esplicito utilizzando le istruzioni BEGIN TRANSACTION, COMMIT e ROLLBACK. READ_COMMITTED_SNAPSHOT e' un ulteriore parametro che consente di utilizzare il row versioning anziche' i lock per la read consistency.

Datatype

SQL Server supporta molteplici datatype.

I principali datatype per stringhe SQL Server sono: VARCHAR(N), CHAR(N), NVARCHAR(N), NCHAR(N).
I principali datatype sulle date SQL Server sono: DATE, TIME, DATETIME.
I principali datatype numerici SQL Server sono: SMALLINT, INT, BIGINT; DECIMAL o NUMERIC; REAL, FLOAT.
Sono disponibili altri datatype specializzati: UNIQUEIDENTIFIER, XML, GEOGRAPHY, TABLE, ...

Database, Schema ed Utenti

Un istanza SQL Server puo' ospitare molteplici database ma naturalmente bisogna tenere conto del carico di ciascun database e delle prestazioni del sistema ospite.
Un database particolare e' il database master che raccoglie le informazioni sugli altri database presenti e che non e' opportuno utilizzare per ospitare dati applicativi: per le applicazioni e' opportuno creare database separati. Altro database particolare e' model che viene utilizzato per creare nuovi database. Se viene modificato le creazioni successive di database saranno variate di conseguenza.
Su ogni database sono sempre presenti gli schema: dbo (database owner), guest, sys, INFORMATION_SCHEMA. Lo schema dbo e' quello di default.

Gli utenti e gli schema sono distinti in SQL Server ed e' possibile referenziare gli oggetti secondo questa gerarchia: Server.Database.DatabaseSchema.DatabaseObject.

SQL Server utilizza un sistema di autorizzazioni granulare per controllare l'accesso ai database e agli oggetti all'interno di essi. La gestione degli utenti avviene attraverso i seguenti concetti chiave:

In sintesi, la gestione degli utenti in SQL Server prevede la creazione di login, l'associazione di utenti ai database e l'assegnazione di autorizzazioni tramite ruoli o direttamente agli utenti.

Amministrazione

SQL Server - SSMS Microsoft SQL Server Management Studio (SSMS) e' lo strumento principale del DBA per la gestione e l'amministrazione di SQL Server.

Con le versioni piu' recenti di SQL Server alcune delle attivita' di gestione piu' significative sulla base dati sono effettuate automaticamente e con l'utilizzo in cloud alcuni compiti sono completamente automatizzati. Il ruolo del DBA di SQL Server si e' evoluto da un ruolo principalmente tecnico a un ruolo piu' strategico e orientato al business. I DBA devono essere in grado di adattarsi alle nuove tecnologie e alle nuove esigenze aziendali per garantire che i dati siano gestiti in modo efficiente e sicuro. Tra i piu' importanti compiti che restano al DBA:

SQL Server offre una vasta gamma di viste di sistema che forniscono informazioni preziose sullo stato e sulla configurazione del server e dei database. Ecco le principali viste di sistema raggruppate per categoria:

1. Informazioni sul server e sull'istanza:

2. Informazioni sui database:

3. Informazioni sugli oggetti di database:

4. Informazioni sulla sicurezza:

5. Informazioni sulle sessioni e sulle query:

6. Query Store (se abilitato):

Inoltre e' disponibile il data dictionary standard information_schema.

Architettura

In questo capitolo cerchiamo di riassumere gli aspetti dell'architettura di SQL Server.

SQL Server e' un sistema complesso composto da diversi componenti chiave:

L'architettura e' costituita da due componenti principali:

SQL Server archivia i dati in file di dati, organizzati in pagine. Le pagine sono l'unita' fondamentale di archiviazione e contengono righe di dati. SQL Server utilizza varie tecniche di indicizzazione per ottimizzare il recupero dei dati, per default le primary key vengono implementate come indici cluster.

Il log delle transazioni e' un componente critico di SQL Server, responsabile della registrazione di tutte le modifiche al database. Garantisce la durabilita' dei dati e consente il ripristino in caso di guasti del sistema.

Evoluzione di SQL Server

E' disponibile una paginetta con i piu' utili comandi per SQL Server.

SQL Server ha origini lontane e le prime versioni sono state influenzate da Sybase. Microsoft ha fatto evolvere il database negli anni seguendo le richieste del mercato ed implementando le piu' recenti tecnologie.
La versione piu' recente disponibile come in produzione e' SQL Server 2022 che introduce l'integrazione ad Azure Synapse native e miglioramenti sul Query Store ed il Intelligent Query Processing. A breve e' prevista la disponibilita' di SQL Server 2025 con nuove funzionalita' orientate all'AI (Artificial Intelligence).
L'elenco delle versioni di SQL Server e delle relative funzionalita' e' riportato in questa pagina web.

Oltre che on-premises SQL Server e' disponibile in Cloud come servizio gestito su tutti i principali Cloud Provider: Microsoft Azure Database, Amazon RDS, Google Cloud SQL, ...


Titolo: Testo: Introduzione a SQL Server
Livello: Base (1/5)
Data: 31 Ottobre 2024 🎃
Versione: 1.0.1 - 14 Febbraio 2025
Autori: mail [AT] meo.bogliolo.name, Gemini