SQL: Patching error codes

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.

By Rafał Kraik in SQL

Błąd 9009 zwracany w ERRORLEVEL

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.

By Rafał Kraik in Błedy

SQL: Execute permission na całą bazę danych

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]
By Rafał Kraik in SQL

Powershell -czego używać try/catch czy trap?

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 »

By Rafał Kraik in Power Shell

Powershell: MouseMove czyli ruszanie myszką

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

mouse01

Kurs_powershell_landscape_620

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 »

By Rafał Kraik in Power Shell

Powershell: Obiekt o właściwościach nazwanych jak w tablicy

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 »

By Rafał Kraik in Power Shell

Powershell: Jak dostać nazwę zmiennej?

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

By Rafał Kraik in Power Shell