Powershell skript pre MSSQL

Tento skript možno použiť na automatický import sql súborov starších ako 20 minút do databázy MSSQL. Je užitočný, ak povolíte logovanie SQL textu pre vysokovýkonné konfigurácie. Aby ste mohli tento skript spustiť, musíte ho uložiť s príponou .ps1 a povoliť vykonávanie powershellových skriptov pre Windows v editori skupinových politík (alebo musíte skript spustiť ako správca).

Video 1 - Ako použiť powershell skript v databáze MSSQL (Video návod)

Vytvorte nasledujúcu tabuľku MSSQL

CREATE TABLE messagereport
(
    logid int IDENTITY(1,1),
    messageid varchar(64),
    fromconnection varchar(64),
    fromaddress varchar(64),
    requestedconnection varchar(64),
    toconnection varchar(64),
    toaddress varchar(64),
    messagetext varchar(1024),
    route varchar(64),
    datecreated datetime,
    datedeliverytoconnectionsuccess datetime,
    datedeliverytoconnectionfailed datetime,
    deliverytoconnectionreference varchar(256),
    deliverytoconnectionstatusmessage varchar(1024),
    datedeliverytorecipientsuccess datetime,
    datedeliverytorecipientfailed datetime,
    deliverytorecipientstatusmessage varchar(1024),
    status varchar(64)   
)

Prvým krokom je vytvorenie tabuľky messagereport v databáze. Všetky odchádzajúce a prichádzajúce správy budú uložené v tejto tabuľke a aktualizované podľa ich stavu. Ak ste už túto tabuľku vytvorili, môžete tento krok preskočiť. Skopírujte skript na vytvorenie tabuľky vyššie a vykonajte ho vo vašej databáze, ako môžete vidieť na obrázku 1.

vytvorenie tabuľky messagereport
Obrázok 1 - Vytvorenie tabuľky messagereport

Uložte nasledujúci powershell skript ako "dbimport.ps1"

Ďalším krokom je vytvorenie súboru "dbimport.ps1" v priečinku C:\Ozeki, ako je znázornené na obrázku 2. Tento súbor bude obsahovať skript, ktorý periodicky spúšťa SQL dotazy v databáze.

vytvorenie skriptového súboru
Obrázok 2 - Vytvorenie skriptového súboru

$ProcessedDir = "C:\Ozeki\Processed"
New-Item -ItemType Directory -Force -Path $ProcessedDir

#nekonečný cyklus
while (1) {
	#zoznam súborov starších ako 20 minút
	#uistite sa, že čas je väčší ako obdobie, ktoré ste použili v konfigurácii reportingu
	Get-ChildItem "C:\Ozeki\Reporting_SQL" -Filter *.sql | 
		Where{$_.LastWriteTime -le (Get-Date).AddMinutes(-20)} |
	
	Foreach-Object {
		#načítanie obsahu súboru do databázy MSSQL
		Write-Output $_.FullName
		$Text = Get-Content -Path $_.FullName
		Invoke-Sqlcmd -ServerInstance MyComputer\MainInstance -Database MyDatabase
		-Query "$Text" -Username "MyUser" -Password "MyPass"

		
		#presunutie spracovaného súboru do priečinku Processed
		Move-Item -Path $_.FullName -Destination $ProcessedDir
	}
	
	#čakanie na 5 sekúnd
	Start-Sleep -s 5
}

Skopírujte vyššie uvedený powershell skript a vložte ho do súboru "dbimport.ps1", ako môžete vidieť na obrázku 3.

vloženie skriptu do súboru
Obrázok 3 - Vloženie skriptu do súboru

Nakoniec upravte skript podľa vašej vlastnej databázy MSSQL. V inštancii servera definujte názov počítača a inštanciu databázy MSSQL. Zadajte používateľské meno a heslo, ktoré chcete použiť, a nahraďte "Mydatabase" názvom vašej databázy (Obrázok 4).

zmena príkazu MySQL
Obrázok 4 - Zmena príkazu MySQL

Spustite skript ako správca

powershell -ExecutionPolicy Bypass -File dbimport.ps1

Teraz spustite skript v power shelli vykonaním vyššie uvedeného príkazu, ako môžete vidieť na obrázku 5.

spustenie powershell skriptu
Obrázok 5 - Spustenie powershell skriptu

Môžete vidieť, že skript vykonáva všetky SQL súbory, ktoré sú staršie ako 20 minút v priečinku 'C:\Ozeki\Reporting_SQL' jeden po druhom (Obrázok 6).

skript vykonáva SQL dotazy
Obrázok 6 - Skript vykonáva SQL dotazy

Každý SQL súbor, ktorý skript spustil, je presunutý do priečinka Processed, aby sa nestratili žiadne dotazy (Obrázok 7). Odtiaľto ich môžete manuálne odstrániť, ak ich už nepotrebujete.

SQL súbory presunuté do priečinka Processed
Obrázok 7 - SQL súbory presunuté do priečinka Processed

Nakoniec, ak sa pozriete do databázy, môžete vidieť, že všetky správy boli vložené do tabuľky messsagereport, ako ukazuje obrázok 8.

správy vložené do databázy
Obrázok 8 - Správy vložené do databázy

More information