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).
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.
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.
$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.
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).
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.
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).
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.
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.
More information