Auditing delle istruzioni SELECT in SQL Server

Sebbene le istruzioni SELECT non siano distruttive per natura, né tantomeno possano modificare dati o schema, ci sono diversi casi che possono richiedere che vengano messe sotto osservazione (“auditing”). Le istruzioni SQL eseguite, possono indicare vari problemi potenziali o attuali e questa è la ragione per cui è importante sapere chi ha visto cosa e quando

July 25, 2017

Come recuperare una singola tabella da un backup di un database SQL Server

Se si chiede ai DBA quale caratteristica gli piacerebbe principalmente vedere aggiunta alle funzionalità di ripristino di SQL Server, sicuramente essi risponderebbero: “La possibilità di recuperare una tabella singola dal backup di un database”.

Naturalmente, è possibile recuperare i dati di una tabella specifica dal backup di un database, ma non si può fare senza ripristinare l’intero backup.

Perché i DBA vogliono questo? Bene, le ragioni sono molto semplici:

July 25, 2017

Come pianificare un backup di SQL Server

Avere un buon piano di backup e restore è una parte importante di una strategia di disaster recovery. Questo articolo descrive 3 differenti approcci/soluzioni per creare un backup pianificato in SQL Server.

Come parte di una strategia di backup diversi tipi possono essere usati insieme.

July 25, 2017

Come migrare un database di SQL Server ad una versione più recente

I DBA sono ben consapevoli del fatto che retrocedere un database di SQL Server non può essere fatto alla cieca. Anche quando il livello di compatibilità del database che si vuole migrare ad una versione precedente di SQL Server corrisponde con quella versione, non ci si può semplicemente limitare a fare il restore del backup. Quello che però probabilmente non ci si aspetta è che anche il passaggio ad una versione superiore possa essere un problema.

July 25, 2017

Come generare script di creazione utenti e ruoli per un database SQL Server

Introduzione

È stata ricevuta dal team di sviluppo una richiesta per la copia di uno dei database di produzione su sviluppo, allo scopo di simulare dei test in tempo reale. Una volta che il backup del database di produzione è stato ripristinato sull’istanza di sviluppo rimpiazzando la vecchia copia, i precedenti user del db di sviluppo sono sostituiti da quelli nuovi di produzione. Però noi abbiamo ancora bisogno dei vecchi login per la connessione al database di sviluppo.

July 25, 2017

Tecniche di auditing per database SQL Server

Mettere sotto osservazione (auditing) un database SQL Server non serve soltanto per essere conformi ai requisiti previsti dalle regole di conformità. È una pratica diventata necessaria per l’analisi di azioni sul database, risoluzione di problemi, indagine su attività sospette o fraudolente. Può anche essere utile per prevenire azioni inappropriate da parte degli utenti, come se ci fosse un sistema di TV a circuito chiuso sui propri database.

Ci sono differenti tecniche di auditing per SQL Server:

July 25, 2017

Usare le regular expressions (RegEx) in SQL Server per generare dati di test casuali

Una regular expression (abbreviato regex o regexp talvolta chiamata rational expression) è una sequenza di caratteri che forma uno schema di ricerca, principalmente usato per trovare corrispondenze e nelle funzioni di "trova e sostituisci". Si può anche usare come generatore di dati, seguendo il concetto delle regular expressions inverse e produrre dati di test casuali da usare in database di test.

July 25, 2017

Sincronizzare database SQL Server in differenti postazioni remote

Scenario

Immaginiamo un’applicazione utilizzata dai rappresentanti o dai distaccamenti (usata ad esempio dai corrieri, dai medici e via discorrendo) progettata per collezionare dati direttamente sui posti e per inviarli ad una ipotetica sede centrale. Essa non solo invierà dati, ma riceverà le informazioni il più aggiornate possibile direttamente dalla sede centrale.

Ad esempio, quando un rappresentante vende un prodotto, inserisce tramite software l’ordine di acquisto, tipicamente usando dispositivi mobili. L’entry poi viene inviata al gestionale centralizzato, in modo da consolidare l’ordine. Ma per avere la giacenza di magazzino, le informazioni del dispositivo dovranno essere aggiornate il più possibile per non dare falsi riscontri durante la fase di acquisto.

Lo scenario di cui sopra evidenzia la necessità di una sincronizzazione costante fra i dispositivi remoti e le “sedi centrali”.

October 1, 2014

Come recuperare dati in caso di operazioni di DELETE e UPDATE accidentali

di Uno dei peggiori incubi di un DBA è il perdere dati a causa di un errore da egli commesso. A volte capita eseguire erroneamente comandi di UPDATE e DELETE dimenticandosi della essenziale clausola WHERE. In quel caso, potenzialmente, vengono toccati milioni di record e, di conseguenza, compromessi i dati ad essi relativi.

October 1, 2014

Recuperare i dati di una tabella eliminata senza avere un backup

Nel caso in cui sia stato accidentalmente eseguito uno statement di DROP su di una tabella, se abbiamo un full database backup effettuato dopo la DROP senza che nessun cambiamento si sia verificato, possiamo semplicemente ripristinare i dati sovrascrivendo il database originario con il backup. Nel caso in cui questo non fosse possibile, sia perché gli oggetti sul database hanno subito cambiamenti, sia perché non abbiamo un backup valido, c’è ancora una possibilità di riavere i dati persi.

October 1, 2014

Come rinominare una colonna senza intaccare le logiche dei nostri database

L’operazione di rinomina di una colonna appartenente ad una tabella o ad una vista non è qualcosa di cui uno sviluppatore su SQL Server necessità tutti i giorni. Tuttavia, quando serve, com’è possibile fare in modo che l’operazione sia indolore e priva di difficoltà?

Rinominare una colonna può sembrare molto semplice. Ad esempio, per cambiare il nome della colonna TerritoryID della tabella Sales.SalesTerritory in TerrID, è sufficiente eseguire il seguente statement:

October 1, 2014

Come trovare rapidamente oggetti e dati su un database SQL Server

Una delle funzionalità più usate dagli sviluppatori e dai DBA è quella di ricercare dati ed oggetti all’interno di database. Non esiste nativamente una combinazione di tasti che ci consenta una rapida ricerca, come potrebbe essere il Ctrl+F, né su SQL Server Management Studio, né su Visual Studio. Tuttavia esistono varie opzioni:

September 26, 2014

Aprire file LDF e visualizzarne il contenuto

Ogni database SQL Server è mappato ad un insieme di file. Questi file portano con sé dati e informazioni sulle transazioni effettuate. I file sono utilizzati solo da un database e i dati non sono mai mixati con le informazioni di transazione. Mentre i dati sono salvati su file con estensione MDF (per il primario) ed NDF (per i secondari), le transazioni risiedono nel file di log, con estensione LDF. Concettualmente il file di log è una stringa di record di log. Fisicamente i record di log sono salvati in un file LDF (o più) che implementa, appunto, il log delle transazioni.

September 26, 2014

Leggere il log delle transazioni di un database di SQL Server

Il log delle transazioni su SQL Server contiene le informazioni relative ai cambiamenti avvenuti sui nostri database. Esso possiede le informazioni tali da recuperare un database in un preciso istante, per rilanciare o annullare un cambiamento. Come visualizzare il suo contenuto, come cercare una singola transazione, come capire cosa è successo per annullare i cambiamenti?

September 26, 2014