Powershell szkript MSSQL
Ez a szkript automatikusan importálja a 20 percnél régebbi sql fájlokat az MSSQL adatbázisba. Hasznos lehet, ha engedélyezi az SQL szöveges naplózást nagy teljesítményű konfigurációkhoz. A szkript futtatásához mentse el .ps1 kiterjesztéssel, és engedélyezze a power shell szkriptek végrehajtását a Windows rendszerben a csoportházirend-szerkesztővel (vagy futtassa a szkriptet rendszergazdaként).
Hozza létre a következő MSSQL táblát
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) )
Az első lépés a messagereport tábla létrehozása az adatbázisban. Minden kimenő és bejövő üzenet ebben a táblában lesz tárolva, és frissül az állapotuknak megfelelően. Ha már létrehozta ezt a táblát, kihagyhatja ezt a lépést. Másolja ki a fenti táblalétrehozó szkriptet, és hajtsa végre az adatbázisban, ahogy az az 1. ábrán látható.
Mentse el a következő powershell szkriptet "dbimport.ps1" néven
A következő lépés a "dbimport.ps1" fájl létrehozása a C:\Ozeki mappában, ahogy az a 2. ábrán látható. Ez a fájl tartalmazza a szkriptet, amely időszakosan futtat SQL lekérdezéseket az adatbázisban.
$ProcessedDir = "C:\Ozeki\Processed" New-Item -ItemType Directory -Force -Path $ProcessedDir #végtelen ciklus while (1) { #20 percnél régebbi fájlok listázása #győződjön meg róla, hogy az idő nagyobb, mint a jelentéskészítési konfigurációban használt periódus Get-ChildItem "C:\Ozeki\Reporting_SQL" -Filter *.sql | Where{$_.LastWriteTime -le (Get-Date).AddMinutes(-20)} | Foreach-Object { #a fájl tartalmának betöltése az mssql adatbázisba Write-Output $_.FullName $Text = Get-Content -Path $_.FullName Invoke-Sqlcmd -ServerInstance MyComputer\MainInstance -Database MyDatabase -Query "$Text" -Username "MyUser" -Password "MyPass" #a feldolgozott fájl áthelyezése a feldolgozott mappába Move-Item -Path $_.FullName -Destination $ProcessedDir } #5 másodperc szünet Start-Sleep -s 5 }
Másolja ki a fenti power shell szkriptet, és illessze be a "dbimport.ps1" fájlba, ahogy az a 3. ábrán látható.
Végül módosítsa a szkriptet saját MSSQL adatbázisa szerint. A Szerver példányban adja meg az MSSQL adatbázis számítógép- és példánynevét. Adja meg a használni kívánt felhasználónevet és jelszót, és cserélje le a "Mydatabase" kifejezést a saját adatbázisa nevére (4. ábra).
Futtassa a szkriptet rendszergazdaként
powershell -ExecutionPolicy Bypass -File dbimport.ps1
Most futtassa a szkriptet a power shellben a fenti parancs végrehajtásával, ahogy az az 5. ábrán látható.
Látható, hogy a szkript végrehajtja az összes 20 percnél régebbi SQL fájlt a 'C:\Ozeki\Reporting_SQL' mappában egyesével (6. ábra).
Minden SQL fájl, amelyet a szkript futtatott, áthelyeződik a Feldolgozott mappába, így egyetlen lekérdezés sem veszik el (7. ábra). Innen manuálisan törölheti őket, ha már nincs rájuk szüksége.
Végül, ha megnézi az adatbázist, láthatja, hogy minden üzenet be lett szúrva a messsagereport táblába, ahogy azt a 8. ábra mutatja.
More information