Powershell skripta za MSSQL

Ova skripta se može koristiti za automatski uvoz SQL datoteka starijih od 20 minuta u MSSQL bazu podataka. Korisno je ako omogućite SQL tekstualno bilježenje za konfiguracije visokih performansi. Kako biste izvršili ovu skriptu, morate je spremiti s ekstenzijom .ps1, te morate omogućiti izvršavanje Powershell skripti za Windows u uređivaču grupne politike (ili morate izvršiti skriptu kao Administrator).

Video 1 - Kako koristiti Powershell skriptu u MSSQL bazi podataka (Video tutorial)

Kreirajte sljedeću MSSQL tablicu

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

Prvi korak je kreiranje tablice messagereport u bazi podataka. Sve odlazne i dolazne poruke bit će pohranjene u ovu tablicu i ažurirane prema njihovom statusu. Ako ste već kreirali ovu tablicu, možete preskočiti ovaj korak. Kopirajte skriptu za kreiranje tablice iznad i izvršite je u svojoj bazi podataka kao što možete vidjeti na Slici 1.

kreiranje tablice messagereport
Slika 1 - Kreiranje tablice messagereport

Spremite sljedeću Powershell skriptu kao "dbimport.ps1"

Sljedeći korak je kreiranje datoteke "dbimport.ps1" u mapi C:\Ozeki kao što je prikazano na Slici 2. Ova datoteka će sadržavati skriptu koja periodično izvršava SQL upite u bazi podataka.

kreiranje skriptne datoteke
Slika 2 - Kreiranje skriptne datoteke

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

#beskonačna petlja
while (1) {
	#popis datoteka starijih od 20 minuta
	#pobrinite se da je vrijeme veće od razdoblja koje ste koristili u konfiguraciji izvješćivanja
	Get-ChildItem "C:\Ozeki\Reporting_SQL" -Filter *.sql | 
		Where{$_.LastWriteTime -le (Get-Date).AddMinutes(-20)} |
	
	Foreach-Object {
		#učitavanje sadržaja datoteke u MSSQL bazu podataka
		Write-Output $_.FullName
		$Text = Get-Content -Path $_.FullName
		Invoke-Sqlcmd -ServerInstance MyComputer\MainInstance -Database MyDatabase
		-Query "$Text" -Username "MyUser" -Password "MyPass"

		
		#premještanje obrađene datoteke u mapu Processed
		Move-Item -Path $_.FullName -Destination $ProcessedDir
	}
	
	#pauza od 5 sekundi
	Start-Sleep -s 5
}

Kopirajte Powershell skriptu iznad i zalijepite je u datoteku "dbimport.ps1" kao što možete vidjeti na Slici 3.

zalijepite skriptu u datoteku
Slika 3 - Zalijepite skriptu u datoteku

Na kraju, izmijenite skriptu prema vlastitoj MSSQL bazi podataka. U instanci poslužitelja, definirajte naziv računala i instance MSSQL baze podataka. Unesite korisničko ime i lozinku koje želite koristiti, te zamijenite "Mydatabase" s nazivom vaše baze podataka (Slika 4).

promjena MySQL naredbe
Slika 4 - Promjena MySQL naredbe

Izvršite skriptu kao administrator

powershell -ExecutionPolicy Bypass -File dbimport.ps1

Sada izvršite skriptu u Powershellu pokretanjem gornje naredbe kao što možete vidjeti na Slici 5.

pokrenite Powershell skriptu
Slika 5 - Pokretanje Powershell skripte

Možete vidjeti da skripta izvršava sve SQL datoteke starije od 20 minuta u mapi 'C:\Ozeki\Reporting_SQL' jednu po jednu (Slika 6).

skripta izvršava SQL upite
Slika 6 - Skripta izvršava SQL upite

Svaka SQL datoteka koju je skripta izvršila premještena je u mapu Processed kako ne bi bilo izgubljenih upita (Slika 7). Odatle ih možete ručno izbrisati ako ih više ne trebate.

SQL datoteke premještene u mapu Processed
Slika 7 - SQL datoteke premještene u mapu Processed

Na kraju, ako pogledate u bazu podataka, možete vidjeti da su sve poruke umetnute u tablicu messagereport kao što pokazuje Slika 8.

poruke umetnute u bazu podataka
Slika 8 - Poruke umetnute u bazu podataka

More information