Avviare un programma automaticamente in una sessione di Desktop Remoto

In una sessione di Desktop Remoto può essere moto utile far avviare un programma automaticamente. Ciò permette agli utenti remoti di trovarsi il programma già avviato nel momento in cui si connettono ad un server tramite Desktop Remoto senza dover accedere al desktop del server. Fino alla versione Windows Server 2012, questa possibilità era facilmente configurabile specificando il programma da avviare nella sezione “Ambiente” delle proprietà dell’utente abilitato alla connessione in Desktop Remoto. Ad esempio, per avviare il Blocco note, si può inserire C:\Windows\System32\notepad.exe.

Ambiente desktop remoto


Non è una questione di comodità ma un amministratore di sistema potrebbe volere che un utente remoto, utilizzi quel programma e non possa fare altro. Nel momento in cui chiude il programma si chiude anche la connessione al server. Questo impedisce ad un utente smaliziato o poco esperto di far danni al server. Ovviamente parliamo di Windows Server. Nelle versioni client di Windows, ad esempio Windows 10, l’opzione di avvio automaticamente di un programma all’avvio di una sessione di Desktop Remoto, almeno nativamente non è prevista.

Tuttavia, coma anticipato in apertura, ci sono alcuni casi in cui questa funzionalità potrebbe non funzionare correttamente, come per le versioni più recenti di Windows Server oppure, ad esempio, se il server fa parte di un dominio e si utilizza un account di dominio per accedere. In questi casi potrebbe essere necessario modificare una chiave di registro sul server

Per fare questo, dobbiamo seguire questi passi:

  • Aprire l’editor del Registro di sistema (regedit) sul controller di dominio e navigare alla seguente chiave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  • Creare un nuovo valore DWORD (32 bit) chiamato fQueryUserConfigFromDC e impostarlo a 1.
  • Chiudere l’editor del Registro di sistema e riavviare il controller di dominio.
regedit

Questo valore consente al server di Desktop Remoto di interrogare il controller di dominio per ottenere le impostazioni del programma iniziale dell’utente.

Database in modalità Suspect

Ora vedremo come ripristinare un database sql server in suspect mode. 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:

  1. file fisici sul file system corrotti (i motivi potrebbero essere di natura software (virus) o hardware (hard disk danneggiato))
  2. spazio libero su disco insufficiente
  3. Memoria RAM insufficiente
  4. i file risultano aperti da un altro software quindi con accesso negato
  5. uno spegnimento inaspettato del computer o l’arresto inaspettato dei servizi di SQL Server
  6. Il sistema non riesce ad aprire il dispositivo in cui risiedono i dati o il file di registro del server SQL
  7. 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
  8. SQL Server tenta di aprire un database e il file appartenente a quel database è già aperto dal software antivirus installato sul sistema
  9. SQL non può completare un’operazione di rollback o rollforward.

Per eseguire le operazioni di ripristino utilizzeremo Microsoft Sql Server Managment Studio con i comandi T-SQL. Il primo tentativo è quello di togliere il flag di sospetto al database. Dopo aver effettuato la connessione al motore di database, apriamo la finestra per eseguire una nuova query e digitiamo il seguente coamndo :

exec sp_resetstatus DBNAME

Questa operazione, purtroppo, difficilmente risolve il nostro problema, pertanto sarà necessario compiere altre operazioni. 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

dbcc checkdb(‘DBNAME’,REPAIR_ALLOW_DATA_LOSS)

alter database DBNAME set MULTI_USER

Come ripristinare un database

Database in Recovery Pending

Ripristinare un database in modalità’ “Ripristino in sospeso”

Ora vedremo come ripristinare un database SQL Server in modalità’ “Ripristino in sospeso”. La modalità “Ripristino in sospeso” è uno dei vari stati in cui può trovarsi un database e indica che questo 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).

Cause e soluzioni


Altre cause possono essere lo spazio di archiviazione su disco o memoria insufficiente, o il danneggiamento del file MDF. I motivi potrebbero essere problemi del sottosistema del disco, problemi della piattaforma, un guasto hardware oppure un 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;

ripristinare un database in “Ripristino in sospeso”

Il log degli errori può mostrare che il database non è stato ripristinato correttamente.

La causa porebbe essere un file di registro mancante del database che potrebbe essere eliminato, rinominato o danneggiato. In questo caso 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’;

Questa immagine ha l'attributo alt vuoto; il nome del file è EMERGENCY.jpg

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.

Problemi del database

Un database di Microsoft SQL Server si trova sempre in uno stato specifico dal sistema. Ora vedremo i vari stati e problemi di SQL SERVER.

Stati di un database SQL Server

Il database SQL Server può assumere diversi stati in base alle attività in esecuzione. Ecco un elenco completo dei possibili stati di un database SQL Server:

  1. Online – il database è in esecuzione e disponibile per le connessioni.
  2. Offline – il database non è disponibile per le connessioni e non può essere utilizzato.
  3. In riparazione – il database è in fase di riparazione a causa di problemi di integrità dei dati.
  4. In ripristino – il database è in fase di ripristino da un backup.
  5. In recupero – il database è in fase di recupero dopo un incidente di sistema.
  6. In ripristino di emergenza – il database è in fase di ripristino di emergenza per recuperare i dati in caso di problemi critici.
  7. In ripristino di transazioni – il database è in fase di ripristino di transazioni per ripristinare i dati alle transazioni precedenti.
  8. In stato di sospensione – il database è in stato di sospensione e non può essere utilizzato
  9. In stato di sospensione con rollback – il database è in stato di sospensione e sta eseguendo un rollback di transazioni.
  10. In stato di sospensione con ripristino – il database è in stato di sospensione e sta eseguendo un ripristino.

Modificare lo stato del database

Per modificare lo stato del database, è possibile utilizzare i comandi ALTER DATABASE per impostare lo stato di connessione o di ripristino. Ad esempio, per portare un database offline, si utilizzerebbe il comando ALTER DATABASE “nome_database” SET OFFLINE.

Per verificare lo stato attuale del database, è possibile utilizzare il comando SELECT state_desc FROM sys.databases WHERE name = ‘nome_database’.

Possiamo 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 conoscere gli stati e problemi dstati e problemi di SQL SERVER

Come risultato della query otterremo l’elenco dei database collegati ed il loro stato

In generale, è importante prestare attenzione allo stato del database e gestirlo correttamente per garantire la disponibilità e l’integrità dei dati.

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.

Dopo aver individuato i vari stati e soprattutto i problemi di SQL SERVER, vedremo come risolverli.

Sql Server e Linux

Installare Sql Server in ambiente Linux

In questo articolo vedremo come installare Sql Server in ambiente Linux, in particolare la versione 2022 di Sql Server in una distribuzione Ubuntu

Per prima cosa importiamo la chiave di sicurezza GPG del repository pubblico digitando il seguente comando :

$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add –

repository pubblico

dopodiché registriamo SQL Server 2022 nel repository Ubuntu e scriviamo :

sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-preview.list)”

registrare SQL Server 2022 nel repository Ubuntu

ora aggiornarniamo i repository di Ubuntu.

sudo apt-get update

aggiornamento del repository di Ubuntu

Installazione di Sql Server

A questo punto scarichiamo e andiamo ad installare Sql Server in ambiente Linux. 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

Installazione Sql Server
Installazione Sql 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

  1. Evaluation
  2. Developer
  3. Express
  4. Web
  5. Standard
  6. Enterprise
  7. Enterprise Core
  8. 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.

termini della licenza di SQL Server

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

controllare lo stato del servizio

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.