Microsoft SQL Server
| Microsoft SQL Server | |||
|---|---|---|---|
| Parte del sistema di gestione di database relazionali | |||
|
| |||
| Informazione Generale | |||
| tipo di programma | database relazionale del sistema di gestione | ||
| sviluppatore | microsoft | ||
| Versione iniziale | 24 aprile 1989 | ||
| Licenza | EULA Microsoft | ||
| Informazioni tecniche | |||
| Previsto in | C , C++ | ||
| file leggibili | |||
| |||
| file modificabili | |||
| |||
| Collegamenti | |||
Microsoft SQL Server è un sistema di gestione di database relazionali sviluppato da Microsoft .
Il linguaggio di sviluppo utilizzato (da riga di comando o tramite l'interfaccia grafica di Management Studio) è Transact-SQL (TSQL), un'implementazione dello standard ANSI del linguaggio SQL, utilizzato per manipolare e recuperare dati ( DML ), creare tabelle e definire relazioni tra di loro ( DDL ).
Tra i concorrenti più importanti di SQL Server ci sono: Oracle , MariaDB , MySQL , PostgreSQL . SQL Server è stato tradizionalmente disponibile solo per i sistemi operativi Microsoft Windows , ma dal 2016 è disponibile per GNU/Linux , [ 2 ] [ 3 ] e dal 2017 anche per Docker . [ 4 ]
Può essere configurato per utilizzare più istanze sullo stesso server fisico, la prima installazione di solito porta il nome del server e le seguenti - nomi specifici (con un trattino tra il nome del server e il nome dell'installazione).
Versioni
| Versione | Anno | nome della versione | nome chiave |
|---|---|---|---|
| 1.0 ( OS/2 ) |
1989 | SQL Server 1-0 | SQL |
| 4.21 ( WinNT ) |
1993 | SQL Server 4.21 | CONTINUAZIONE |
| 6.0 | 1995 | SQL Server 6.0 | SQL95 |
| 6.5 | millenovecentonovantasei | SQL Server 6.5 | Idra |
| 7.0 | 1998 | SQL Server 7.0 [ 6 ] | sfinge |
| - | 1999 | Strumenti OLAP di SQL Server 7.0 |
Piatto |
| 8.0 | 2000 | SQL Server 2000 [ 7 ] | Shiloh |
| 8.0 | 2003 | SQL Server 2000 edizione a 64 bit |
Libertà |
| 9.0 | 2005 | SQL Server 2005 [ 8 ] | Yukon |
| 10.0 | 2008 | SQL Server 2008 [ 9 ] | Katmai |
| 10.25 | 2010 | SQL-Azure DB | CloudDatabase |
| 10.50 | 2010 | SQL Server 2008 R2 [ 10 ] | Kilimangiaro |
| 11.0 | 2012 | SQL Server 2012 [ 11 ] | Denali |
| 12.0 | 2015 | SQL Server 2014 [ 12 ] | SQL14 (ex Hekaton) |
| 13.0 | 2016 | SQL Server 2016 | SQL16 |
| 14.0 | 2017 | SQL Server 2017 | vNext 2017 |
| 15.0 | 2019 | SQL Server 2019 | Dafne |
Il codice sorgente originale di SQL Server utilizzato nelle versioni precedenti alla 7.0 sarebbe stato acquistato da Sybase , ma è stato aggiornato nelle versioni 7.0 e 2000 e riscritto nella versione 2005. In genere, ogni 2-3 anni viene rilasciata una nuova versione e, tra queste versioni, vengono proposti service pack con miglioramenti e correzioni di bug e hotfix per problemi urgenti nel sistema di sicurezza o bug critici.
Disponibilità
Microsoft SQL Server è venduto come licenza. Tuttavia, gli utenti che desiderano utilizzare SQL Server, occupandosi esclusivamente del programma, come la richiesta e l'archiviazione di informazioni, necessitano di una CAL.
Modelli di licenza
Microsoft SQL Server utilizza diversi modelli di licenza, si tratta di licenze Server + CAL e licenze Core.
Modello server + CAL
Questo modello di licenza è un'opzione più economica, viene acquistato con la licenza e devono essere acquistate CAL aggiuntive per utenti o dispositivi.
Licenze per core
Scegliendo la licenza per core, concedi in licenza più core del processore fisico del server. Con Microsoft SQL Server 2019, almeno 4 core devono essere sempre concessi in licenza. Questo modello di licenza è spesso scelto dalle grandi aziende.
Le CAL non sono necessarie per questo.
Licenza di accesso client (CAL)
Una licenza di accesso client ha lo scopo di fornire diritti d'uso per consentire agli utenti o ai dispositivi di accedere al software del server. Ciò significa che ogni computer o utente che necessita di accedere al software del server necessita di una CAL.
CAL utente
Una User CAL dà accesso alla suddetta funzione a un utente sulla rete. Ciò significa che questo utente può accedere alla rete del server anche tramite altri dispositivi.
CAL per dispositivo
Una Device CAL consente di accedere a un dispositivo. Ciò significa che tutti gli utenti di questo dispositivo possono effettuare il login per accedere al server. Questo è spesso vantaggioso solo quando ci sono più utenti che dispositivi all'interno di un'organizzazione, [ 13 ]
Caratteristiche
- Supporto alle transazioni .
- Supporta le stored procedure .
- Include anche un ambiente di amministrazione grafico , che consente l'utilizzo di comandi DDL e DML graficamente.
- Consente di lavorare in modalità client-server , in cui le informazioni ei dati sono ospitati sul server e i terminali di rete o i client accedono solo alle informazioni.
- Consente inoltre di gestire le informazioni da altri server di dati .
Questo sistema include una versione ridotta, denominata MSDE con lo stesso motore di database ma orientata a progetti più piccoli, che nelle versioni 2005 e 2008 diventa SQL Express Edition , ovvero un'edizione distribuita gratuitamente .
È comune sviluppare progetti completi utilizzando Microsoft SQL Server e Microsoft Access attraverso il cosiddetto ADP ( Access Data Project ). In questo modo il database ( Microsoft SQL Server ) viene completato, con l'ambiente di sviluppo ( VBA Access), attraverso l'implementazione di applicativi a due livelli tramite l'utilizzo di moduli Windows .
SQLCMD , osql o PowerShell vengono usati per gestire SQL tramite le righe di comando .
Per lo sviluppo di applicazioni più complesse (tre o più livelli), Microsoft SQL Server include interfacce di accesso per diverse piattaforme di sviluppo, tra cui .NET , ma il server è disponibile solo per i Sistemi Operativi .
Il tipo NUMERIC è stato migliorato per essere utilizzato come identificatore di colonna a partire dalla versione 2008 R2.
Programmazione
T-SQL
T-SQL (Transact-SQL) è il principale mezzo di interazione con il Server, che consente di eseguire operazioni chiave in SQL Server, inclusa la creazione e la modifica di schemi di database, l'inserimento e la modifica di dati nel database.data, nonché l'amministrazione di il server in quanto tale. Ciò avviene inviando istruzioni e dichiarazioni T-SQL che vengono elaborate dal server ei risultati (o errori) restituiti all'applicazione client.
Client nativo SQL
SQL Native Client è la libreria di accesso ai dati per i client Microsoft SQL Server versione 2005 e successive. Implementa in modo nativo il supporto per le funzionalità di SQL Server, inclusa l'esecuzione di flussi di dati tabulari, il supporto per i database con mirroring di SQL Server, il supporto completo per tutti i tipi di dati supportati da SQL Server, i set di operazioni asincroni, le notifiche di query, il supporto per la crittografia e la ricezione di più set di risultati in un'unica sessione di database. SQL Native Client viene utilizzato come estensione dei plug-in di SQL Server per altre tecnologie di accesso ai dati, inclusi ADO o OLE DB. SQL Native Client può anche essere utilizzato direttamente, bypassando i livelli di accesso ai dati.
Edizioni e servizi
Ogni edizione di SQL Server ha versioni diverse con prezzi diversi (per ciascuna versione) che dipendono anche dalla configurazione fisica del server. [ 14 ] Le principali versioni sono presentate di seguito:
Impresa
Include tutte le funzionalità (disabilitate nelle altre edizioni) È il tipo di versione con più privilegi sul mercato.
sviluppatore
Un'edizione con le stesse caratteristiche dell'Enterprise, per essere installata solo in ambiente di sviluppo e non in produzione. Se è sviluppato per un'edizione Standard, devono essere prese in considerazione le funzionalità disabilitate per questa versione.
Standard
Una versione limitata a seconda della configurazione del server e delle sue caratteristiche, progettata per server inferiori.
Ad esempio: nella versione 2012, l'edizione Enterprise supporta un numero illimitato di processori e l' aggiunta a caldo di memoria e CPU senza interruzione del servizio o del server; mentre l'edizione Standard è limitata a 16 processori e non supporta "hot add".
Espresso
Una versione gratuita che consente la creazione di database limitati con funzionalità di base, al fine di supportare applicazioni che necessitano di una soluzione semplice per archiviare una quantità limitata di dati o utenti le cui risorse e esigenze sono limitate.
Nella versione 2012, questa edizione può utilizzare un massimo di 1 GB di memoria e memorizzare non più di 10 GB, funziona su server con un numero massimo di quattro processori. Queste limitazioni vengono mantenute nella versione 2014 (4 core, 1 GB di RAM e 10 GB per database).
SQLAzure
È una versione di SQL Server nel cloud, che consente di pagare mensilmente il servizio senza la necessità di mantenere un server fisico (On Premise). L'azienda paga solo per il servizio e il servizio è gestito tramite server farm in diverse località del mondo.
Con SQL Azure non è necessario installare, mantenere o aggiornare un server fisico; nonostante questo servizio dipenda da aspetti legati a problemi di sicurezza riguardanti la sua presenza all'esterno dell'azienda e la disponibilità di una connessione Internet.
Per un certo periodo il servizio è stato esteso con la possibilità di creare un server virtuale in rete, installare SQL Server oltre a uno dei servizi concorrenti e gestire il server virtuale come se fosse un server fisico locale (sebbene sia non fisicamente accessibile). ); e puoi distinguere tra l'opzione originale che si chiama PAAS ( Platform as a Service : Platform as a Service ) e la nuova opzione di server virtuali chiamata IAAS ( Infrastructure as a Service: Infrastructure as a Service ).
Questo servizio è fornito da Microsoft dal 2009 e si unisce a servizi simili di società di terze parti .
Interfaccia utente
SQL Server fornisce alcune interfacce che sono cambiate nel corso degli anni, le più note delle quali sono le interfacce grafiche utilizzate come strumento di sviluppo standard per sviluppatori e amministratori .
L'interfaccia grafica fino al 2005 comprendeva l'Enterprise Manager con una vista ad albero dei vari oggetti e la possibilità di gestirli; e Query Analyzer come interfaccia testuale per eseguire comandi TSQL.
Nella versione 2005 i due strumenti sono stati unificati in uno – SQL Server Management Studio (SSMS), e dal 2008 la possibilità di lavorare con Visual Studio – l'interfaccia di sviluppo standard di Microsoft (ai diversi linguaggi , BI , ecc.). Un'altra interfaccia opzionale è l'utilizzo della Command Line , con strumenti come SQLCmd, ISQL, OSQL che consentono l'esecuzione di script e l'elaborazione batch . Dal 2008 può essere sviluppato con SQLCmd (SQL Command) tramite SSMS senza interconnessione all'interfaccia testuale di Windows. Un'altra opzione nel campo degli script è l'uso del linguaggio di scripting Powershell di Microsoft .
Oltre alle interfacce standard di SQL Server, puoi eseguire comandi TSQL con strumenti di connessione come ODBC e OLE-DB. [ 15 ]
Servizi
Contrariamente ai sistemi di database come Microsoft Access che sono "passivi" e contengono un file a cui ci si deve connettere e l'esecuzione dei comandi viene eseguita sul client (il computer dell'utente), in SQL Server ci sono numerosi servizi , software che vengono eseguiti nella memoria del server dal sistema, e quindi sfruttano le capacità del server che è più potente dei client, previene la congestione della rete e può pianificare attività che vengono eseguite anche se il client non è connesso Sei connesso .
Servizi principali:
- SQL Server : il "motore" del sistema
- SQL Agent - Esecuzione di attività (Lavori, script programmati) e invio di avvisi in caso di carico pesante e irregolare del sistema
- Full-Text Filter Daemon Launcher - Utilizzo degli indici speciali di "Ricerca di testo completo" per la ricerca di testo avanzata
- SQL Browser - Il "ascoltatore" dedicato ai comandi inviati e reindirizzarli alla loro destinazione
- Server SSIS - Il funzionamento di SSIS (lo strumento ETL )
- SSAS Server - Il funzionamento di SSAS (lo strumento OLAP )
- SSRS Server - Il funzionamento di SSRS (lo strumento di reporting)
Funzionalità e strumenti di base
Database
In ogni installazione di SQL Server ci sono 4 database di sistema e la possibilità di creare nuovi database da parte dell'utente, in cui i dati sono archiviati in tabelle.
Questi database, creati dagli utenti, comprendono sostanzialmente un file di dati (con il suffisso mdf) con le tabelle ei diversi oggetti a livello di database; e un file di registro (con suffisso ldf) con transazioni aperte e transazioni chiuse, soggetto al modello di ripristino selezionato (tutte le modifiche al database dall'ultimo backup possono essere accumulate nel file di registro). È possibile creare un set di file di dati in aggiunta a quello principale (con il suffisso ndf) per considerazioni di efficienza, partizionamento del carico di lavoro tra dischi rigidi, ecc.
Database di sistema:
- master - Tutte le procedure, funzioni e tabelle di sistema utilizzate da tutti i database e installate automaticamente, nonché quelle create dagli amministratori di sistema. Inoltre, tutte le definizioni relative alla sicurezza a livello di server sono archiviate in questo database.
- msdb - Archiviazione di attività dell'agente, codici CLR uniti al sistema, pacchetti SSIS e altro.
- modello - Il modello di database. Ogni nuovo database viene creato come una copia di questo database, a meno che non sia stato definito in modo esplicito qualcos'altro.
- tempdb : database temporaneo che viene creato nuovamente ogni volta che il servizio viene riavviato. Viene utilizzato per memorizzare tabelle temporanee create dagli utenti o dal sistema (ad esempio in ordinamenti complessi).
Tabelle fisse e temporanee
Dal punto di vista logico, i dati archiviati nei database in tabelle, che attraverso di essi implementa la teoria dei database relazionali. La tabella è divisa in righe e colonne (a volte denominate record e campi). Le tabelle possono essere fisse o temporanee, mentre nel secondo caso esistono fisicamente nel database tempdb, e vengono automaticamente cancellate in caso di disconnessione della sessione o della connessione al server, a seconda del tipo di tabella temporanea.
Dal punto di vista fisico, il sistema divide i file di database in estensioni da 64 KB, ciascuna in otto pagine da 8 KB. In genere, ogni Extent viene assegnata a una tabella oa un indice , ad eccezione delle tabelle piccole; e ogni pagina è sempre assegnata a una tabella specifica. Il sistema è responsabile della crescita dei file, in base alle impostazioni dell'utente, e dell'assegnazione di estensioni e pagine alle tabelle.
Le tabelle possono essere indicizzate. Gli indici sono archiviati accanto alla tabella (Indice non cluster) o sono la tabella stessa (Indice cluster). Gli indici aiutano a trovare i dati nelle tabelle (come i file nelle raccolte), a ordinarli e a definire le chiavi primarie .
È possibile creare una relazione uno-a-molti tra le tabelle .
Oltre alle tabelle utente, ci sono tabelle che memorizzano metadati: dati sul sistema stesso, i diversi oggetti, i diritti, statistiche sulle prestazioni del sistema (DMV), ecc.
Tipi di dati
Per ogni colonna di una tabella e per ogni variabile o parametro, viene definito un tipo di dati da memorizzare in essa, tra i quali:
- Numeri : numeri interi e non interi di varie dimensioni e con diversi livelli di precisione; e incremento automatico opzionale.
- Testi : stringhe di diverse lunghezze e diverse capacità per supportare lingue diverse.
- Date : date a vari livelli di precisione, da giorni interi a frazioni inferiori al secondo, date a supporto dell'inizio del 20° secolo o del calendario gregoriano e capacità di differenziare tra diversi usi del tempo.
- XML : dati testuali (stringhe) che rappresentano insiemi di dati standard (standard SGML).
- Dati binari : dati memorizzati come dati binari (bit e byte), che consentono di memorizzare file grafici, ecc.
- Geografia : Rappresentazione standard di informazioni geografiche, come stati, aree geografiche, località; e calcoli come distanze.
- Geometria : Rappresentazione standard di punti, linee, superfici nel piano; e le relazioni tra di loro.
- Hierarchyid : rappresentazione standard di informazioni gerarchiche come distinte base, rapporti tra dipendenti, ecc.
Visualizzazioni
Le viste generalmente rappresentano i comandi di estrazione dei dati, che vengono archiviati senza i dati (che sono archiviati nelle tabelle). Questa opzione ci consente di creare estrazioni complesse o standard, memorizzarle come viste e utilizzare le viste senza dover riscrivere i comandi o mantenere il codice dove appaiono. Inoltre, è un mezzo molto importante per concedere diritti di lettura selettivi (nel caso in cui si desideri consentire a un utente di visualizzare parzialmente le colonne o le righe di una tabella).
Una vista può essere considerata una tabella virtuale o una query memorizzata. I dati accessibili tramite una vista non vengono archiviati in un oggetto diverso dal database. Ciò che è memorizzato nel database è un'istruzione SELECT. Il risultato dell'istruzione SELECT costituisce la tabella virtuale restituita dalla vista. L'utente può utilizzare tale tabella virtuale facendo riferimento al nome della vista nelle istruzioni Transact-SQL, nello stesso modo in cui si fa riferimento alle tabelle. Le viste vengono utilizzate per alcune o tutte queste funzioni:
• Limitare l'accesso degli utenti a righe specifiche di una tabella. Ad esempio, consentendo a un dipendente di visualizzare solo le righe che salvano il proprio lavoro in una tabella di rilevamento dell'attività lavorativa.
• Limitare l'accesso degli utenti a colonne specifiche. Ad esempio, consentire ai dipendenti che non lavorano nel reparto buste paga di vedere le colonne nome, ufficio, telefono e reparto della tabella dei dipendenti, ma non consentire loro di vedere le colonne con i dati sugli stipendi o altre informazioni personali.
• Combina colonne di più tabelle in modo che appaiano come un'unica tabella.
• Aggiungere informazioni invece di presentare i dettagli. Ad esempio, presentando la somma di una colonna o il valore massimo o minimo di una colonna.
Le viste vengono create definendo l'istruzione SELECT che recupera i dati presentati dalla vista. Le tabelle di dati a cui fa riferimento l'istruzione SELECT sono note come tabelle di base per la vista. Le viste in tutte le versioni di SQL Server sono aggiornabili (possono essere la destinazione di istruzioni UPDATE, DELETE o INSERT) purché la modifica influisca solo su una delle tabelle di base della vista.
Procedure archiviate
Le procedure sono script di comandi TSQL, che possono essere eseguiti con parametri diversi. Ad esempio, una procedura che ottiene il numero dell'anno come parametro e aggiorna una tabella di riepilogo delle vendite, con le vendite degli agenti in tale anno, in base alla tabella di registrazione delle vendite.
Le stored procedure possono semplificare notevolmente la gestione del database e la visualizzazione delle informazioni sul database e sui suoi utenti. Le stored procedure sono una raccolta precompilata di istruzioni SQL e istruzioni di controllo del flusso facoltative archiviate con un unico nome ed elaborate come un'unità. Le stored procedure sono archiviate in un database; possono essere eseguiti dall'interno di un'applicazione e consentono variabili dichiarate dall'utente, esecuzione condizionale e altre potenti funzionalità di programmazione. Le stored procedure possono contenere flusso di programma, logica e query del database. Possono accettare parametri, fornire risultati di parametri, restituire set di risultati singoli o multipli e restituire valori.
I vantaggi dell'utilizzo delle stored procedure in SQL Server anziché dei programmi Transact-SQL archiviati localmente nei computer client sono i seguenti:
? Consentire la programmazione modulare.
Puoi creare la procedura una volta, salvarla nel database e richiamarla dal programma quante volte vuoi. Uno specialista di programmazione di database può creare stored procedure, che possono quindi essere modificate indipendentemente dal codice sorgente del programma. Facilitano la manutenzione.
• Consenti un'esecuzione più rapida.
In situazioni in cui è necessaria una grande quantità di codice Transact-SQL o se le operazioni vengono eseguite più volte, le stored procedure possono essere più veloci dei batch di codice Transact-SQL. Le procedure vengono analizzate e ottimizzate al momento della creazione ed è possibile utilizzare una versione della procedura che è in memoria dopo che è stata eseguita per la prima volta. Le istruzioni Transact-SQL inviate più volte dal client ogni volta che devono essere eseguite devono essere compilate e ottimizzate ogni volta che vengono eseguite da SQL ServerSQL Server.
• Possono ridurre il traffico di rete.
Un'operazione che richiede centinaia di righe di codice Transact-SQL può essere eseguita con una singola istruzione che esegue il codice in una procedura, anziché inviare centinaia di righe di codice attraverso la rete.
• Possono essere utilizzati come meccanismo di sicurezza.
Agli utenti possono essere concesse le autorizzazioni per eseguire una procedura memorizzata, anche se non dispongono dell'autorizzazione per eseguire direttamente le istruzioni della procedura.
Funzioni definite dall'utente
Le funzioni sono un oggetto che combina alcune funzionalità delle viste con altre delle procedure. Come le viste, possono estrarre dati ed eseguire calcoli, restituendo un risultato all'utente o al programma che li ha eseguiti. Oltre alle procedure, includono codici TSQL e possono essere eseguiti con parametri.
Le funzioni restituiscono un valore o un insieme di valori.
Le funzioni definite dall'utente vengono create con l'istruzione CREATE FUNCTION, modificate con l'istruzione ALTER FUNCTIONe rimosse con l'istruzione DROP FUNCTION. Tutti i nomi di funzione completi (nome_database.nome_proprietario.nome_funzione) definiti dall'utente devono essere univoci. Per creare, modificare o rimuovere funzioni definite dall'utente, è necessario disporre di CREATE FUNCTION. Gli utenti diversi dal proprietario devono disporre dell'autorizzazione EXECUTE per una funzione e solo allora possono utilizzarla in un'istruzione Transact-SQL. Per creare o modificare tabelle con riferimenti a funzioni definite dall'utente nel vincolo CHECK, nella clausola DEFAULTo nella definizione di una colonna calcolata, è necessario disporre anche dell'autorizzazione REFERENCESper le funzioni. Gli errori Transact-SQL che provocano l'annullamento di un'istruzione e il passaggio all'istruzione successiva nel modulo, ad esempio trigger o stored procedure, vengono trattati in modo diverso all'interno di una funzione. Nelle funzioni, questi errori causano l'arresto dell'esecuzione della funzione. Ciò causa l'interruzione della funzione che ha chiamato l'istruzione. Una funzione definita dall'utente ha zero o più parametri di input e restituisce un valore scalare o una tabella. Una funzione può avere un massimo di 1024 parametri di ingresso. Quando un parametro di funzione assume un valore predefinito, la parola chiave deve essere specificata DEFAULTquando si chiama la funzione per ottenere il valore predefinito. Questo comportamento è diverso dai parametri del valore predefinito nelle stored procedure, per cui l'omissione del parametro implica la specifica del valore predefinito. Le funzioni definite dall'utente non supportano i parametri di output.
Query distribuite
Le query distribuite accedono ai dati da più origini, che possono essere archiviate su un computer o su computer diversi. Microsoft SQL Server 2000 supporta le query distribuite tramite OLE DB Le query distribuite consentono agli utenti di SQL Server di accedere a:
• Dati distribuiti archiviati in più istanze di SQL Server.
• Dati eterogenei archiviati in diverse origini dati relazionali e non relazionali a cui si accede tramite un provider OLE DB.
I provider OLE DB espongono i dati in oggetti tabulari chiamati set di righe. SQL Server 2000 consente di fare riferimento ai set di righe dei provider OLE DB nelle istruzioni Transact-SQL come se fossero una tabella di SQL Server. È possibile fare riferimento direttamente a tabelle e viste da origini dati esterne nelle istruzioni Transact-SQL SELECT, INSERT, UPDATE e DELETE. Poiché le query distribuite utilizzano OLE DB come interfaccia sottostante, accedono ai tradizionali sistemi DBMS relazionali con processori di query SQL, nonché ai dati gestiti da origini dati di varia potenza e sofisticatezza. Finché il software proprietario espone i dati in un set di righe tabulare tramite il provider OLE DB, i dati possono essere utilizzati nelle query distribuite. Nota: l'utilizzo di query distribuite in SQL Server è simile alla funzionalità delle tabelle collegate tramite ODBC, precedentemente supportata da Microsoft Access. Questa funzionalità è ora incorporata in SQL Server con OLE DB come interfaccia per i dati esterni.
Transazioni
Una transazione è un insieme di comandi, che viene eseguito completamente o non eseguito affatto: tutto o niente. Ad esempio, se una somma di denaro è stata spostata da un conto bancario all'altro ed entrambi i conti devono essere aggiornati al momento del deposito e del prelievo; è obbligatorio che entrambi gli account si aggiornino insieme, o nessuno dei due (nel caso in cui uno degli aggiornamenti fallisca); per evitare conseguenze incoerenti di un deposito senza alcun prelievo, o viceversa. Pertanto, una transazione è una sequenza di operazioni eseguite come un'unica unità logica di lavoro. Un'unità di lavoro logica deve presentare quattro proprietà, note come proprietà ACID (atomicità, consistenza, isolamento e durabilità), per essere qualificata come transazione:
- Atomicita
Una transazione deve essere un'unità di lavoro atomica, indipendentemente dal fatto che vengano apportate tutte le modifiche ai dati o che non ne venga eseguita nessuna.
- Coerenza
Al termine, una transazione deve lasciare tutti i dati in uno stato coerente. In un database relazionale, tutte le regole devono essere applicate alle modifiche alle transazioni per mantenere l'integrità di tutti i dati. Tutte le strutture dati interne, come gli indici B-tree o le liste double linked, devono essere corrette al termine della transazione.
- Isolamento
Le modifiche apportate da transazioni simultanee devono essere isolate dalle modifiche apportate da altre transazioni concorrenti. Una transazione vede i dati nello stato in cui si trovava prima di essere modificata da un'altra transazione simultanea o dopo che la seconda transazione è stata completata, ma non vede uno stato intermedio. Questo è noto come serializzazione perché il suo risultato è la possibilità di ricaricare i dati iniziali e riprodurre una serie di transazioni per terminare con i dati nello stesso stato in cui erano dopo che sono state eseguite le transazioni originali.
- Durabilità
Una volta conclusa una transazione, i suoi effetti sono permanenti nel sistema. Le modifiche persistono anche in caso di errore di sistema.
SQL Server ha una capacità limitata di annidare le transazioni.
L'ottimizzatore
L'ottimizzatore è una parte del software che "prende la decisione" di come verrà eseguito ciascun comando, in modo che l'esecuzione sia la più efficiente, o almeno abbastanza efficiente (cioè abbastanza efficiente da evitare di continuare a cercare un altro comando soluzione, che ancora più efficiente, il prezzo della ricerca aggiuntiva "costerà" più del risparmio di risorse).
SQL è un linguaggio dichiarativo , in cui lo sviluppatore dichiara di voler estrarre o aggiornare senza bisogno di indicare come (a differenza dei linguaggi imperativi , e quindi gioca un ruolo di primo piano l'ottimizzatore, che secondo le statistiche che il sistema memorizza sulle distribuzioni dei dati in tabelle, indici e regole interne; prende la decisione appropriata.
Privilegi e sicurezza dei dati
Per connettersi a SQL Server, è necessario un accesso (utente a livello di server). Quando la politica di sicurezza è definita come Autenticazione di Windows e il server è combinato con le definizioni di dominio , gli accessi sono definiti in Active Directory . Quando la definizione è Autenticazione SQL Server, gli accessi (utente e password) vengono definiti nello stesso SQL Server. Di conseguenza, nel primo caso ci si deve identificare con nome e password solo al momento della connessione alla rete, e poi ci si connette automaticamente a tutti i server che sono Autenticazione Windows (con Login globale); e nel secondo caso devi identificarti quando ti connetti a ciascun server di autenticazione di SQL Server (ogni volta con un Login locale).
A livello di database, l'utente è identificato come un Utente che è generalmente correlato al Login (che è a livello di server), e i privilegi per l'Utente esistono solo a livello di database (oltre ai privilegi di Login). Per concedere diritti generali è possibile assistere con elenchi di ruoli server (ruoli a livello di server) o ruoli di database (ruoli specifici a livello di database), ciascuno con privilegi specifici per un ruolo specifico; e ogni utente associato a uno di questi ruoli ottiene i privilegi ad esso associati. Inoltre, l'amministratore può concedere diritti specifici e creare altri ruoli del database (non è possibile creare ruoli del server).
I privilegi a livello di server includono la possibilità di creare database, utilizzare processi, creare backup e ripristini di database, modificare definizioni server e così via. I privilegi a livello di database consentono di estrarre e aggiornare dati, creare oggetti come procedure e tabelle, utilizzare tali oggetti e così via. Come regola generale è possibile concedere diritti (Concedi), revocare privilegi esistenti (Revoca) e negare privilegi che non esistono ancora (Nega).
Altri strumenti di servizio
Oltre alle sue capacità elementari come strumento di gestione di database relazionali (creare tabelle, definire relazioni tra loro, gestire transazioni, creare indici, ecc.), SQL Server supporta un elenco crescente di altri strumenti di servizio; a parte strumenti di terze parti che cambiano o completare ciò che esiste.
Backup e ripristini
Oltre a soluzioni alternative a livello di sistema operativo (backup dei file di database), è presente uno strumento integrato in SQL Server che consente un backup completo o differenziale, secondo il modello di ripristino predefinito sul database; e un ripristino completo o puntuale. Oltre a un backup del database, puoi eseguirne il backup tramite uno script (con o senza i dati). A partire dal 2008, puoi comprimere i file di backup.
Compressione
A partire dal 2008 è stata aggiunta l'opzione di compressione, che consente di comprimere le dimensioni fisiche di tabelle e indici, utilizzare il volume dei dischi rigidi in modo più efficiente e ridurre le operazioni di I/O (che aumenta il carico sulla CPU). Come già accennato, puoi anche comprimere i file di backup.
Replica, disponibilità elevata e ripristino di emergenza
Alcuni strumenti consentono di creare repliche parziali o complete di database, migliorare la disponibilità e ripristinare i disastri; a parte l'opzione per il backup e il ripristino dei database, un'opzione che dovrebbe essere molto lenta.
Le copie create da questi strumenti possono essere utilizzate come backup immediatamente disponibile in caso di guasto del sistema, nonché come replica in un sottosistema, indipendente dal sistema di origine, per il bilanciamento del carico; e che gli aggiornamenti vengono eseguiti sul database e i recuperi per i report vengono eseguiti sulla replica.
Tra questi strumenti possiamo citare la replica che permette di creare una replica sincronizzata del database, il Mirroring che esegue nel server mirror ogni aggiornamento che viene eseguito nel server di origine, Log Shipping che permette di archiviare una copia sincronizzata tramite dei file di log (Log) con tutti gli aggiornamenti sul server di origine, e strumenti di alta disponibilità e disaster recovery (HADR, dal 2012) che risolvono i problemi di Mirroring in relazione ai tempi di reazione ai guasti tecnici e alla disponibilità delle copie in tempo di pace.
L'agente e la pianificazione delle attività
L'agente è il servizio incaricato della pianificazione delle attività, ed è incaricato di eseguirle in modo indipendente. In genere esegue attività di manutenzione, attività ETL complesse , backup , ecc.
Manutenzione
Per migliorare le prestazioni del sistema è necessario mantenere le statistiche, utilizzate dall'ottimizzatore, organizzare i file fisici, ecc; e per questi scopi vengono utilizzati strumenti dedicati, che vengono eseguiti periodicamente da attività pianificate e in modo coordinato con l'ETL e le attività di backup.
Agente di servizio
Una tecnologia che è stata aggiunta nel 2005 che implementa l'architettura orientata ai servizi e che consente esecuzioni asincrone: prima di tutto inviare messaggi tra diverse applicazioni in esecuzione contemporaneamente, ma anche eseguire procedure in modo asincrono, in modo fire-and-forget - una procedura che viene eseguito in una sessione diversa dalla sessione che l'ha avviata ed entrambe le procedure continuano a essere eseguite indipendentemente l'una dall'altra.
Invia email
SQL Server ha la capacità di inviare e-mail tramite codice. Questa funzionalità viene generalmente utilizzata per inviare avvisi su problemi di sistema (ad esempio se l'utilizzo della CPU è aumentato a una soglia predefinita o se il processo ETL ha avuto esito negativo), ma anche quando il processo è terminato correttamente.
Ricerca a tutto testo
Uno strumento che permette di indicizzare colonne testuali come testi e non solo come stringhe; ed eseguire ricerche complesse a seconda del significato del testo e della lingua. Ad esempio, cerchiamo un verbo e vogliamo ottenere tutte le occorrenze delle sue coniugazioni.
Traccia
Questi strumenti includono il Trace che consente di tracciare le attività al fine di mantenere carichi e guasti, e la sicurezza dei dati (non è consentito il ripristino dei dati), il Profiler che consente di tracciare i comandi che vengono eseguiti e gli eventi che si verificano su il server ed Extended Events che è stato aggiunto nel 2008 e cambia il profiler grazie alla sua firma bassa (consumo di risorse e influenza sulle prestazioni del server).
Oltre a questi, 2 tipi di Trigger possono essere utilizzati per tenere traccia di modifiche e attività: Trigger DML predefiniti su tabelle e viste e che vengono avviati da istruzioni di aggiornamento dei dati (Seleziona/Aggiorna/Cancella) e Trigger DDL che vengono avviati da modifiche al oggetti stessi (e non i dati), a livello di database o server.
Unione CLR
A partire dal 2005, è possibile combinare facilmente procedure, funzioni e funzioni aggregate sviluppate in CLR in SQL Server . Devi sviluppare il codice in uno degli strumenti di sviluppo .NET , creare un file DLL e unirlo al sistema. Il vantaggio di questa tecnologia è la sua capacità in problemi che non sono esclusivamente database (manipolazione dei dati) e includono calcoli complessi o manipolazioni testuali di stringhe.
Strumenti di business intelligence
Un'installazione tipica include anche strumenti di Business Intelligence ( BI ) :
SSIS (SQL Server Integration Services)
Uno strumento ETL che consente l'estrazione di dati da diverse fonti (non solo SQL Server), la trasformazione di detti dati e il caricamento (generalmente ma non necessariamente in un data warehouse ).
SSAS (SQL Server Analysis Services)
Uno strumento per la creazione di database multidimensionali (non relazionali) , che possono essere esplorati estraendo dati a diversi livelli di raggruppamento, analizzando una somma nei suoi dettagli e utilizzando MDX (un linguaggio simile a SQL, adattato ai database multidimensionali).
SSRS (SQL Server Reporting Services)
Uno strumento per creare e formattare report, concedere loro diritti di visualizzazione e distribuirli. Possono essere visualizzati con un browser Web e possono essere esportati in Excel , PDF , ecc. i dati vengono solitamente estratti dal data warehouse o OLAP.
Svantaggi
- A partire dalla versione di SQL Server 2012, le query scritte in T-SQL non sono compatibili con le versioni precedenti di SQL Server 2008 o precedenti.
- Nelle versioni a 32 bit, SQL Server utilizza l'estensione AWE ( Address Windowing Extension ) per indirizzare oltre 4 GB. Ciò ti impedisce di utilizzare la gestione dinamica della memoria e ti consente solo di ospitare un massimo di 64 GB di memoria condivisa. Questa limitazione è esclusiva dei sistemi operativi a 32 bit; nei sistemi operativi a 64 bit la memoria massima indirizzabile nella Standard Edition è 64 Gb e nella Enterprise Edition 4 Tb
Vedi anche
Riferimenti
- ^ Guthrie, Scott (7 marzo 2016). "Annunciazione di SQL Server su Linux" (html) . Microsoft (in inglese) . Archiviato dall'originale il 7 marzo 2016 . Estratto il 3 marzo 2019 .
- ^ a b Domínguez, Andres Zamora (25 ottobre 2017). "Microsoft SQL Server ora può essere eseguito su Linux GNU." (html) . Pandora FMS (in inglese) . Archiviato dall'originale il 24 novembre 2018 . Estratto il 24 novembre 2018 . «Il 28 dicembre 2016 – festa dei Santi Innocenti, quel giorno speciale in cui gli spagnoli scherzano per tutta la giornata – è stata annunciata l'acquisizione di un'adesione di tipo “Platinum” da parte della società Microsoft ® alla Linux Foundation e il lancio di Microsoft SQL Server®. »
- ^ Lerner, Reuve M. "SQL Server su Linux" (html) . Geek Guide (in inglese) . Archiviato dall'originale il 3 agosto 2017 . Estratto il 24 novembre 2018 . Ma anche il fan dell'open source più scettico deve ammettere che Microsoft è cambiata negli ultimi anni. Ha rilasciato molti strumenti e librerie per sviluppatori come open source e ha iniziato a includere Linux come piattaforma supportata per alcuni dei suoi software. »
- ^ "Preparati per SQL Server 2017" (html) . Microsoft (in inglese) . Archiviato dall'originale il 1 maggio 2017 . Estratto il 24 novembre 2018 . "Porta le prestazioni e la sicurezza leader del settore di SQL Server nei container Windows, Linux e Docker. »
- ↑ Cronologia di sviluppo di SQL Server
- ↑ Novità di Microsoft SQL Server 7
- ↑ Novità di Microsoft SQL Server 2000
- ↑ Novità di SQL Server 2005
- ↑ Novità (SQL Server 2008)
- ↑ Novità di Microsoft SQL Server 2008 R2
- ↑ Novità di SQL Server 2012
- ↑ Novità di SQL Server 2014
- ↑ "Tutto ciò che devi sapere sulle licenze SQL Server e sulle CAL" . Soft trader (in inglese) . 15 settembre 2021 . Estratto il 27 settembre 2021 .
- ↑ Funzionalità supportate dalle edizioni SQL Server 2014
- ↑ Stringhe di connessione
Collegamenti esterni
- Pagina Web di Microsoft SQL Server
- Sviluppatori di Microsoft SQL Server
- libri in esposizione
- Microsoft SQL Server 2017
- Giornale database Giornale database
- Pagina di download di Microsoft SQL Server 2012