2015-12-12
Spróbuję tu dokumentować błędy jakie spotykam przypatchowaniu serwerów SQL,wiec się nie dziw, że na początku za wiele tu nie będzie i w gruncie rzeczy, jakoś niespecjalnie mi zależy, żeby było tu dużo błędów…:
0
Działa i nawet restart nie jest wymagany!
3010
Final result: Passed but reboot required, see logs for details
Exit code (Decimal): 3010
Generalnie nic się nie stało. Kod 3010 oznacza, że patchowanie się udało, ale jest wymagany restart serwera.
-2147024882
Exit code (Decimal): -2147024882
Exit facility code: 7
Exit error code: 14
Exit message: Exception of type 'System.OutOfMemoryException’ was thrown.
Moje patchowanie odbywało się powershellowej sesji remotingu. Domyślnie na jedną sesję zdalną jest rezerwowane 150 MB. To trochę mało… Zwiększyłem do 1024:
PS WSMan:\localhost\Shell> Set-Item MaxMemoryPerShellMB 1024
-2068380094
Exit code (Decimal): -2068380094
Exit facility code: 1207
Exit error code: 1602
Exit message: User has cancelled.
No cóż, z jakiegoś powodu użytkownik zatrzymał instalację. Zdarza się 😉
-2067919934
Exit code (Decimal): -2067919934
Exit facility code: 1214
Exit error code: 3010
Exit message: A computer restart is required. You must restart this computer before installing SQL Server.
Komputer wymaga restartu. Uruchom go ponownie i spróbuj jeszcze raz.
-2068643838
Exit code (Decimal): -2068643838
Exit facility code: 1203
Exit error code: 2
Exit message: No features were updated during the setup execution. The requested features may not be installed or features are already at a higher patch level. Please review the summary.txt logs for further details.
No cóż, na systemie jest już coś nowszego. Próbujesz zainstalować staroć, więc masz bład.
2015-12-11
Skrypt powershell na systemie zdalnym uruchamiał starego dosowego batcha, który miał za zadanie uruchomić jakiś program exe i kończył się instrukcją
exit %errorlevel%
No i cóż ciągle dostawałem numer 9009. Krótkie szukanie po googlach i właściwie ciągle informacje o błędzie związanym z DNS! A ten program exe nic nie miał wspólnego z siecią. I dopiero tutaj znalazłem rozwiązanie:
http://www.febooti.com/products/automation-workshop/online-help/events/run-dos-cmd-command/exit-codes/
Error 9009 – Program is not recognized as an internal or external command, operable program or batch file. Indicates that command, application name or path has been misspelled when configuring the Action.
Po prostu z jakiegoś powodu w tym momencie mój exe znikał, a dlaczego to już całkiem inna bajka.
2015-12-11
Użytkownik zażyczył sobie nadania uprawnień:
-odczyt
-zapis
-wykonanie procedur w całej bazie danych
Odczyt – proste – db_datareader
Zapis – proste -db_datawriter
Wykonanie – proste – db_procexecutor … ops nie ma takiej roli 😉 No ale sprawę załatwia polecenie
grant execute on database::DatabaseName to [UserName]
2015-12-07
Pisząc skrypt masz możliwość obsługi błędów na kilka sposobów, a te najpopularniejsze to
- blok try / catch
- instrukcja trap
Zawsze polecam stosowanie try catch, bo nie jest to trudne rozwiązanie, a pozwala na dość elastyczną obsługę błędów. Zasada jest prosta. W bloku try umieść instrukcje, które potencjalnie mogą spowodować błąd, a obsługę błędu wykonaj w catch. Takich bloków try catch można w skrypcie umieścić więcej i dzięki temu można w różny sposób reagować na różne błędy.
function Get-IP($hostName)
{
[System.Net.Dns]::GetHostAddresses("www.$name.com")
}
$name = 'kaskdicxoienrh'
Try
{
Get-IP $name
}
catch
{
Write-Warning "$name - bad name - terminating script"
return
}
Czytaj dalej »
2015-12-03
Wyobraź sobie, że masz w nocy do wykonania długotrwałe zadanie. Jeśli na komputerze nic się dzieje mogą się zdarzyć różne niespodziewane rzeczy: komputer przejdzie w stan czuwania, rozłączy się sesja zostaniesz wylogowany itp. No a oczywiście nie chce ci się siedzieć całą noc, żeby tylko ruszać myszką…
No więc napiszmy program ruszający myszką. Co będzie potrzebne?
- klasa [System.Windows.Forms.Cursor], a dokładniej jej właściwość Position, która to opisuje aktualne położenie kursora myszki w punktach
- klasa System.Drawing.Point, która jak sama nazwa wskazuje pozwala na zapamiętanie współrzędnych punktu
Aby sprawdzić gdzie znajduje się kursor wykonaj polecenie:
[System.Windows.Forms.Cursor]::Position


X i Y to właściwości opisujące aktualne położenie kursora. Jeśli chcesz zmienić jego położenie, to zmień wartość X lub Y, np. tak: Czytaj dalej »
2015-12-01
Chcesz mieć obiekt, który ma właściwości o wybranych przez Ciebie nazwach. Może np. czytasz konfigurację z pliku ini i z zapisu:
Name=Server001
Domain=domain.pl
Service=SQL
chcesz utworzyć obiekt o właściwościach:
$obj.Name # o wartości Server01
$obj.Domain # o wartości domain.pl
$obj.Service # o wartości SQL
Oto co należy zrobić:
Tworzysz obiekt:
$obj = New-Object -TypeName psobject
A potem wykonujesz kolejno:
$obj | Add-Member -MemberType NoteProperty -Name 'Name' -Value 'Server01'
$obj | Add-Member -MemberType NoteProperty -Name 'Domain' -Value 'domain.pl'
$obj | Add-Member -MemberType NoteProperty -Name 'Service' -Value 'SQL'
Kiedy chcesz się odwołać do właściwości $obj zrobisz to np. tak:
if( $obj.Name -eq 'Server003')
{
...
}
Czytaj dalej »
2015-12-01
Nie wiem do czego to było koledze potrzebne, może kompilator pisze (?) ale pytanie było takie:
Mam zmienną x:
$x=1
Chcę mieć zmienną y, która w swojej wartości będzie miała nazwę zmiennej x. Oto zaproponowane rozwiązanie:
$x=1
$y = (get-variable x).Name
$y