Skrypt Powershell MSSQL
Ten skrypt może być używany do automatycznego importowania plików SQL starszych niż 20 minut do bazy danych MSSQL. Jest pomocny, jeśli włączysz logowanie tekstowe SQL dla konfiguracji wysokiej wydajności. Aby wykonać ten skrypt, musisz zapisać go z rozszerzeniem .ps1 i włączyć wykonywanie skryptów power shell dla systemu Windows w edytorze zasad grupy (lub musisz uruchomić skrypt jako Administrator).
Utwórz następującą tabelę 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) )
Pierwszym krokiem jest utworzenie tabeli messagereport w bazie danych. Wszystkie wychodzące i przychodzące wiadomości będą przechowywane w tej tabeli i aktualizowane zgodnie z ich statusem. Jeśli już utworzyłeś tę tabelę, możesz pominąć ten krok. Skopiuj skrypt tworzenia tabeli powyżej i wykonaj go w swojej bazie danych, jak widać na Rysunku 1.
Zapisz następujący skrypt powershell jako "dbimport.ps1"
Następnym krokiem jest utworzenie pliku "dbimport.ps1" w folderze C:\Ozeki, jak pokazano na Rysunku 2. Ten plik będzie zawierał skrypt, który okresowo wykonuje zapytania SQL w bazie danych.
$ProcessedDir = "C:\Ozeki\Processed" New-Item -ItemType Directory -Force -Path $ProcessedDir #nieskończona pętla while (1) { #lista plików starszych niż 20 minut #upewnij się, że czas jest większy niż okres używany w konfiguracji raportowania Get-ChildItem "C:\Ozeki\Reporting_SQL" -Filter *.sql | Where{$_.LastWriteTime -le (Get-Date).AddMinutes(-20)} | Foreach-Object { #załaduj zawartość pliku do bazy danych mssql Write-Output $_.FullName $Text = Get-Content -Path $_.FullName Invoke-Sqlcmd -ServerInstance MyComputer\MainInstance -Database MyDatabase -Query "$Text" -Username "MyUser" -Password "MyPass" #przenieś przetworzony plik do katalogu processed Move-Item -Path $_.FullName -Destination $ProcessedDir } #czekaj 5 sekund Start-Sleep -s 5 }
Skopiuj powyższy skrypt powershell i wklej go do pliku "dbimport.ps1", jak widać na Rysunku 3.
Na koniec zmodyfikuj skrypt zgodnie z własną bazą danych MSSQL. W Server instance zdefiniuj nazwę komputera i instancji bazy danych MSSQL. Wprowadź nazwę użytkownika i hasło, których chcesz użyć, i zastąp "Mydatabase" nazwą swojej bazy danych (Rysunek 4).
Wykonaj skrypt jako administrator
powershell -ExecutionPolicy Bypass -File dbimport.ps1
Teraz wykonaj skrypt w power shell, uruchamiając powyższe polecenie, jak widać na Rysunku 5.
Możesz zobaczyć, że skrypt wykonuje wszystkie pliki SQL starsze niż 20 minut w folderze 'C:\Ozeki\Reporting_SQL' jeden po drugim (Rysunek 6).
Każdy plik SQL, który skrypt wykonał, jest przenoszony do folderu Processed, aby żadne zapytania nie zostały utracone (Rysunek 7). Stąd możesz je usunąć ręcznie, jeśli nie są już potrzebne.
Na koniec, jeśli spojrzysz do bazy danych, możesz zobaczyć, że wszystkie wiadomości zostały wstawione do tabeli messsagereport, jak pokazuje Rysunek 8.
More information