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).

1. videó - A powershell szkript használata MSSQL adatbázisban (Videó útmutató)

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ó.

messagereport tábla létrehozása
1. ábra - Messagereport tábla létrehozása

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.

a szkriptfájl létrehozása
2. ábra - A szkriptfájl létrehozása

$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ó.

a szkript beillesztése a fájlba
3. ábra - A szkript beillesztése a fájlba

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).

mysql parancs módosítása
4. ábra - MySQL parancs módosítása

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ó.

powershell szkript futtatása
5. ábra - Powershell szkript futtatása

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).

a szkript végrehajtja az SQL lekérdezéseket
6. ábra - A szkript végrehajtja az SQL lekérdezéseket

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.

SQL fájlok áthelyezése a feldolgozott mappába
7. ábra - SQL fájlok áthelyezése a feldolgozott mappába

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.

üzenetek beszúrva az adatbázisba
8. ábra - Üzenetek beszúrva az adatbázisba

More information