mercoledì 6 dicembre 2023

SQL SERVER - Selezione del valore massimo tra più colonne della stessa riga

In SQL Server non esiste una funzione per calcolare il valore massimo tra più colonne della stessa riga, è presente solo la versione "per più righe" generata tramite raggruppamento (GROUP BY).

Per poter fare il calcolo del valore "massimo" tra più colonne, bisogna usare una sub-query:

SELECT  tbl.ID ,
        ( SELECT    MAX(v)
          FROM      ( VALUES ( tbl.Data1 ) , ( tbl.Data2 ) , ( tbl.Data3 ) ) AS value ( v )
          ) AS [MaxDate]
FROM    dbo.tabella AS tbl
Nota: i nomi delle colonne vanno inseriti tra parentesi, sennò non vengono riconosciuti.

SQL SERVER - Utilizzare un cursore per processare ogni riga di una tabella

 Per "ciclare" all'interno dei dati di una tabella (ad esempio, per eseguire uno script per ogni voce della tabella), si utilizzano i cursori.

Il modo corretto per non avere due "fetch" nel codice è usare un "ciclo infinito" WHILE.

Ecco un esempio per recuperare (e utilizzare) il nome di tutte le tabelle (non di sistema) presenti:

SELECT  *
DECLARE @tblName NVARCHAR(255)

-- creazione del cursore
DECLARE tbl_cur CURSOR FOR
SELECT  TABLE_NAME
FROM    [DB_NAME].INFORMATION_SCHEMA.TABLES
WHERE   TABLE_SCHEMA = 'dbo'

-- gestione del cursore
OPEN tbl_cur

WHILE 1 = 1
BEGIN
    FETCH NEXT FROM tbl_cur
    INTO @tblName

    IF @@FETCH_STATUS <> 0
        BREAK

    -- esecuzione comandi
    SELECT 1
END

-- chiusura del cursore
CLOSE tbl_cur
DEALLOCATE tbl_cur

giovedì 22 giugno 2023

POWERSHELL - Elenco delle shares

Per ottenere l'elenco delle shares presenti su un sistema windows, bisogna aprire una shell di powershell e lanciare il seguente comando:
Get-SmbShare

martedì 7 marzo 2023

WEB SERVER - Apache - Pagina iniziale di test

Quando un server web apache viene installato per la prima volta, viene caricata una pagina di test che mostra il funzionamento del server web (la famosa "Testing 123").

La pagina è gestita dal file welcome.conf dentro la directory standard di configurazione di Apache:

/etc/httpd/conf.d

In caso di errore 403, la pagina ridirige all'alias /.noindex.html, che su CentOS punta al seguente file:

Alias /.noindex.html /usr/share/httpd/noindex/index.html

E' possibile:

1. togliere il riferimento

2. modificare l'alias

3. cambiare il contenuto della pagina finale

WEB SERVER - Apache - Direttive Require

Le direttive "Require" permettono di assegnare dei permessi ad una directory in modo da limitare o garantire l'accesso ad essa.

Di base, ci sono 3 elementi da usare: RequireAll, RequireAny e RequireNone.

RequireAll
Nessuna delle indicazioni all'interno deve fallire e almeno una dev'essere confermata.

RequireAny
Almeno una dev'essere vera.

RequireNone
Nessuna di quelle indicate dev'essere vera.

Ecco un esempio:

<Directory "/var/www/html">
        # opzioni
        Options FollowSymLinks MultiViews
        AllowOverride all

        <RequireAll>
                # limitazioni di accesso
                <RequireAny>
                        Require all denied
                        Require ip 127.0.0.1
                        Require local
                        Require ip 192.168
                </RequireAny>
                <RequireNone>
                        Require ip 192.168.0.1
                </RequireNone>
        </RequireAll>
</Directory>

Nota:
se un elemento non contiene nessuna voce, bisogna commentare l'intero "blocco".

#<RequireNone>
#        Require ip 192.168.0.1
#</RequireNone>

lunedì 6 febbraio 2023

POWERSHELL - Capire se la password di un utente è scaduta

Per capire se la password di un utente è scaduta, accedere al server che gestisce l'Active Directory, aprire una shell di powershell e lanciare il seguente comando:
Get-ADUser -identity <user.name> -properties PasswordLastSet, PasswordExpired, PasswordNeverExpires | ft Name, PasswordLastSet, PasswordExpired, PasswordNeverExpires
La terza colonna indica se la password è scaduta o meno.