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).
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.
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.
$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.
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).
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.
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).
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.
Na kraju, ako pogledate u bazu podataka, možete vidjeti da su sve poruke umetnute u tablicu messagereport kao što pokazuje Slika 8.
More information