Un database sospetto è un database ritenuto compromesso da SQL Server che, per ragioni di sicurezza, imposta il flag “sospetto” ed impedisce l’accesso ai dati. Le possibili possono essere:
file fisici sul file system corrotti (i motivi potrebbero essere di natura software (virus) o hardware (hard disk danneggiato))
spazio libero su disco insufficiente
Memoria RAM insufficiente
i file risultano aperti da un altro software quindi con accesso negato
uno spegnimento inaspettato del computer o l’arresto inaspettato dei servizi di SQL Server
Il sistema non riesce ad aprire il dispositivo in cui risiedono i dati o il file di registro del server SQL
Il server SQL si arresta in modo anomalo o si riavvia nel mezzo di una transazione, risultando in un file di registro delle transazioni corrotto o inaccessibile
SQL Server tenta di aprire un database e il file appartenente a quel database è già aperto dal software antivirus installato sul sistema
SQL non può completare un’operazione di rollback o rollforward.
Il primo tentativo è quello di togliere il flag di sospetto al database.
exec sp_resetstatus DBNAME
Il passo successivo è impostare il database in emergenza. In questa modalità i dati del database, se non corrotti, torneranno ad essere accessibili, poi, tramite il comando DBCC, sarà possibile effettuare un check degli oggetti del database. Lanciare i comandi sotto indicati uno alla volta in modo da analizzare sempre l’output restituito.
alter database DBNAME set emergency
dbcc checkdb(‘DBNAME’) alter database DBNAME set SINGLE_USER with ROLLBACK IMMEDIATE
La modalità “Ripristino in sospeso” indica che il database non può avviare il processo di ripristino in caso di arresto anomalo del sistema. Ciò è dovuto al fatto che SQL Server non è in grado di accedere alla pagina di avvio nel file di dati primario (MDF) per determinare se è necessario un ripristino in caso di arresto anomalo del sistema ma non è stato possibile avviare il processo di ripristino (ad esempio, perché il file di registro delle transazioni è mancante o danneggiato).
Altre cause possono essere lo spazio di archiviazione su disco o memoria insufficiente, o il danneggiamento file MDF a causa di molti motivi come problemi del sottosistema del disco, problemi della piattaforma, guasto hardware, attacco di virus e così via.
Nel caso in cui il ripristino del database non può essere avviato a causa di spazio di archiviazione su disco insufficiente bisogna innanzitutto, aumenta lo spazio su disco, dopodiché impostare il database in modalità “Online” ed eseguire il comando CheckDB.
ALTER DATABASE [DBNAME] SET ONLINE; DBCC CHECKDB(‘DBNAME’) WITH NO_INFOMSGS;
Nel caso in cui il log degli errori mostri che il database non è stato ripristinato correttamente a causa di un file di registro mancante del database che potrebbe essere eliminato, rinominato o danneggiato, metti il database in modalità di emergenza, poi scollega il database (metti in modalità OFFLINE) dopodiché allegalo di nuovo (portalo online).
I comandi da eseguire sono i seguenti:
ALTER DATABASE [DBNAME] SET EMERGENCY; ALTER DATABASE [DBNAME] set multi_user; EXEC sp_detach_db ‘DBNAME’; EXEC sp_attach_single_file_db @DBName = ‘DBNAME’, @physname = N’MDF_FILE_FULL_PATCH’;
In alcuni casi è possibile risolvere errori di database utilizzando le opzioni Repair, ma solo come ultima risorsa. Microsoft consiglia sempre un ripristino utente dall’ultimo backup valido noto come metodo principale per il ripristino da errori segnalati da DBCC CHECKDB.
Un database di Microsoft SQL Server si trova sempre in uno stato specifico dal sistema.
L’identificazione dello stato del database e del modo in cui un database può essere spostato tra questi diversi stati consente di risolvere i problemi del database.
Questi stati includono ONLINE, OFFLINE, RESTORING, RECOVERING, SUSPECT, EMERGENCY e RECOVERY PENDING.
È possibile controllare rapidamente lo stato corrente di un database SQL che esegue la query riportata di seguito. Lo stato corrente di un database può essere verificato tramite state_desc.
Andiamo nel Management Studio di Sql Server dove, dopo avere selezionato “Nuova Query”, andremo a digitare i seguenti comandi:
SELECT name, state_desc from sys.databases
Come risultato della query otterremo l’elenco dei database collegati ed il loro stato
A questo punto scarichiamo e installiamo SQL Server 2022. Questo passaggio potrebbe richiedere del tempo poiché installerà pacchetti di dipendenze come gawk, libatomicl , libc++1. Scaricherà anche l’installazione di SQL Server 2022 dal registro Microsoft e avvierà il processo di installazione.
sudo apt-get install -y mssql-server
L’installazione di SQL una volta completata richiede di eseguire l’utilità mssql-conf per la configurazione. Questa utility mssql-conf richiede input utente specifici.
sudo /opt/mssql/bin/mssql-conf setup
Edizione SQL Server : inserire il numero di serie dell’edizione SQL Server 2022 che si desidera utilizzare. Per questa demo, sceglierò la prima opzione, Valutazione
Evaluation
Developer
Express
Web
Standard
Enterprise
Enterprise Core
BYOB (richiede la tua licenza)
Accetta i termini della licenza di SQL Server e scegli la lingua di SQL Server. Inserisco il valore 5 per l’installazione in italiano.
Una volta installato SQL Server 2022, viene visualizzato il messaggio: l’installazione è stata completata correttamente. SQL Server è ora in fase di avvio ed è consigliabile controllare lo stato del servizio.
systemctl status mssql-server –no-pager
Per la connessione a SQL Server 2022 Linux, sono necessari strumenti da riga di comando come SQLCMD o Azure Data Studio, SQL Server Management Studio. Se desideri connetterti in remoto da un computer Windows, puoi installare SSMS dal collegamento.
SSMS è un’applicazione basata su Windows. Pertanto, è possibile scegliere Azure Data Studio per l’installazione nel computer Linux stesso. È possibile fare riferimento alla guida per la configurazione di Azure Data Studio in Linux.
SQL Server è un DBMS (Database Management System) relazionale sviluppato da Microsoft. Si tratta di una delle piattaforme per basi di dati più diffuse al mondo, assieme ad Oracle e a MySQL. Viene utilizzato per gestire database delle dimensioni e strutture più disparate.
A cosa serve?
SQL Server è una piattaforma dati che si utilizza per creare e gestire database, principalmente in ambito aziendale. SQL Server utilizza il linguaggio SQL, in una versione particolare creata da Microsoft e che prende il nome di T-SQL.
Versioni ed edizioni
Edizioni Sql Server
Versioni di SQL Server
Una versione è una distribuzione di SQL Server, aggiornato con migliori funzioni e performance e maggiori affidabilità e sicurezza. Nell’arco di vita di una versione, vengono aggiunte funzionalità e risolte eventuali criticità. La prima versione di SQL Server, la 1.0, risale al 1989.
Ogni versione introduce parecchie novità e funzionalità innovate, ad esempio, dalla versione 2016 SQL Server è compatibile anche con i sistemi operativi Linux.
L’ultima versione pubblica è SQL Server 2022.
Edizioni di SQL Server
Le edizioni, invece, sono le varie tipologie di piattaforma con scopi, utilizzi e prezzi differenti. Le edizioni gratuite disponibili con la versione più aggiornata del DBMS sono la Express e la Developer. A pagamento troviamo le edizioni Standard ed Enterprise, a cui si aggiunge l’edizione Web per uso specializzato, disponibile solo in hosting. Sono inoltre disponibili una serie di edizioni specializzate come Azure SQL Database, completamente in cloud.
Licenze di SQL Server
Microsoft mette a disposizione due principali tipologie di licenze:
quelle per Core, disponibili per le versioni Enterprise e Standard
quelle per CAL/Server, disponibili solo per la versione Standard.
Nella scelta della licenza appropriata per SQL Server ci sono diversi aspetti che conviene prendere in considerazione nel licenziare SQL Server.
A partire da SQL Server 2019 è disponibile anche il licensing per Big Data Cluster. La versione Developer, dedicata in particolare agli sviluppatori, può essere usata in modo del tutto gratuito, ma solo in ambienti di sviluppo e test.
Una novità relativa al licensing 2022 è la durata della Software Assurance, che passa da 2 a 3 anni. Rimane sempre la possibilità di noleggiare le licenze SQL Server per Core, per una durata di 1 o 3 anni.
Performance tuning
Performance tuning significa letteralmente “ottimizzazione delle prestazioni”. Si tratta di misurare, analizzare e ottimizzare le prestazioni di SQL Server, in modo da rendere l’intero sistema più veloce, più sicuro e più stabile.
Di solito, quando si effettua performance tuning in SQL Server, si parte con l’ottimizzazione di query ed indici, due aspetti fondamentali da tenere in considerazione.
Non sono però gli unici. Un tuning effettuato a regola d’arte va ad analizzare e migliorare anche le prestazioni di tutte quelle componenti che fanno parte dell’ambiente SQL Server.
Ci sono numerosi accorgimenti per migliorare la configurazione e le prestazioni di SQL Server, che si apprendono ed affinano con l’esperienza nella gestione dei database. Ad esempio, una funzionalità come l’autogrowth deve essere impostata nella maniera corretta per evitare un’eccessiva crescita del database. In caso di configurazioni errate, si può arrivare ad esaurire rapidamente lo spazio su disco.