2016-12-03
Typ danych pozwalający na zapisywanie w bazie danych SQL informacji o współrzędnych geograficznych jest dostępny już od wersji 2008. Oprócz całego zakresu funkcjonalności z jakiego można korzystać pracując z danymi geograficznymi, typ ten ma jeszcze to do siebie, że jest… ładny! Rzeczywiście podczas uruchamiania zapytania zwracającego dane typu GEOGRAPHY wyświetlana jest dodatkowa zakładka „Spatial results”, która pozwala zobaczyć mapy w postaci graficznej.
Ot np. oto wynik zapytania:
SELECT * FROM dbo.World

A to następny przykład:
SELECT * FROM dbo.World WHERE COUNTRY = 'Poland’
Czytaj dalej »
2016-11-25
Załóżmy, że masz moduł testlib.psm1 o następującej zawartości:
function test-it
{
[cmdletbinding()]
param()
return 1
}
function test-this
{
[cmdletbinding()]
param()
return 2
}
Domyślnie, jeżeli uruchomisz polecenie
Get-Command -Module testlib
to otrzymasz wynik prezentujący funkcje modułu ale numery wersji będą wskazywać 0:

Aby zmienić numer wersji funkcji można stworzyć tzw. manifest do modułu. W manifeście można między innymi wskazać na numer wersji. Oto polecenie tworzące plik manifestu: Czytaj dalej »
2016-11-25
W HyperV można zdefiniować wirtualną sieć dla wirtualnych komputerów. Te sieci można definiować jako external, internal i private. Jakie było moje zdziwienie kiedy po zdefiniowaniu nowej sieci typu external zobaczyłem komunikat, że spowodowałem… katastrofę. Na dodatek żadne restarty, usuwanie innych istniejących sieci nie pomagały. Co było przyczyną?
Otóż kilka dni wcześniej też definiowałem sieci i stworzyłem sieć internal. Sieć internal posiada własną wewnętrzną adresację, ale jeden z adresów staje się wewnętrzną bramą za pomocą której można z wewnętrznej sieci sięgnąć do internetu. Podczas definiowania sieci internal na komputerze hoście jeden z interfejsów sieciowych ma włączaną opcję współdzielenia łącza internetowego. W moim przypadku po pewnym czasie usunąłem sieć internal jednak połączenie na komputerze hoście nadal było oznaczone jako współdzielone. I to właśnie było przyczyną… katastrofy.

Wystarczyło odszukać interfejs z zaznaczoną opcją współdzielenia sieci i ręcznie odznaczyć pole, a potem powtórzyć proces definiowania sieci w HyperV. Więcej na ten temat:
http://www.hurryupandwait.io/blog/understanding-networking-options-with-a-wireless-hyper-v-host-and-solving-catastrophic-failure-0x8000ffff
2016-11-23
IIS Application pool pozwala między innymi zdefiniować konto na jakim będzie pracować aplikacja na systemie windows. W IIS managerze nie jest to wcale trudne: kliknij prawym przyciskiem myszy na wybranej ApplicationPool >> Wybierz Opcje zaawansowane >> kliknij Identity i wpisz nazwę konta i jego hasło. Kilka OK i gotowe!
A co jeśli to samo należy wykonać z poziomu PowerShell i modułu WebAdministration?
Zacznijmy od wyświetlenia właściwości ApplicationPool:
Get-ItemProperty 'IIS:\AppPools\TigerAppPool' | FL *
Wynik widać na obrazku poniżej. Domyślnie zaprezentowane są właściwości z sekcji General a inne właściwości są „ukryte” w grupach. Bezpośrednie właściwości w okienku IIS managera i w wyniku komendy powershell zaznaczone są poniżej na żółto. Grupy kryjące w sobie dodatkowe właściwości są zaznaczone na czerwono:
Czytaj dalej »
2016-11-18
Obsługę błędów można realizować w powershell korzystając z intrukcji try/catch/finally. Często do obsługi błędu wystarczy konstrukcja:
try
{
GWMI Win32_bios -ComputerName 'blablacomp'-ea Stop
}
catch
{
echo "general exception"
}
Ale zdarza się, że z jakiegoś powodu w bloku try znajduje się kilka instrukcji, które mogły spowodować błąd i w zależności od tego jaki błąd został napotkany będzie należało wykonać inną czynność w bloku catch.
Oto przykład takiej konstrukcji:
try
{
del c:\temp\blablabla.txt -ea stop
GWMI Win32_bios -ComputerName 'blablacomp'-ea Stop
}
catch [System.Runtime.InteropServices.COMException]
{
echo "com exception"
}
catch [System.Management.Automation.ItemNotFoundException]
{
echo "file not found exception"
}
catch
{
echo "general exception"
}
Tym razem, jeśli dojdzie do błędu, to w zależności od tego jaki to błąd, zostanie uruchomiona inna sekcja catch. Nazwy w nawiasach kwadratowych są nazwami typów różncyh rodzajów wyjątków zgłaszanych przez uruchamiane w bloku try polecenia. Jeśli doszło by do niewymienionego tutaj błedu to wykonany zostanie standardowy blok catch Czytaj dalej »
2016-11-16
Hmm… A required privilege is not held by the client… Jak ci czegoś brakuje, to powiedz co to jest! Niestety Integration Services Deployment Wizard nie chciał powiedieć co go boli…
Skoro brakuje jakiegoś prawa (Local Settings >> Local Policies >> User Rights Assigment) to naprawa SQL powinna pomóc. Ponieważ serwer był testowy, to naprawa była możliwa. Po naprawie serwera (Panel sterowania >> Programy i funkcje >> SQL Server > Repair), ale bez restartu deployment się udał. Super! Ale co jest przyczyną?
Sprawdziłem ponownie jakie prawa miało przypisane konto SQL Server po naprawie. Potem uruchomilem ponownie SQL serwer i IS Deployment Wizard przestał działać. Sprawdziłem więc znowu jakie prawa miało konto SQL server i… kilka ubyło! Podejrzani to:
„Replace a process level token”,”NT SERVICE\MSSQLSERVER”,”SeAssignPrimaryTokenPrivilege”
„Adjust memory quotas for a process”,”NT SERVICE\MSSQLSERVER”,”SeIncreaseQuotaPrivilege”
„Bypass traverse checking”,”NT SERVICE\MSSQLSERVER”,”SeChangeNotifyPrivilege”
W tym przypadku prawa są definiowane na pozioie zasad grupy, więc w kolejnym kroku była potrzebna pomoc chłopaków z AD.
Rzeczywiście te prawa są wymienione na liście wymaganych przez SQL (https://msdn.microsoft.com/en-us/library/ms143504(v=sql.110).aspx#Windows), więc nie powinno być problemu z ich uzyskaniem. Czytaj dalej »
2016-11-14
Co 500+ może mieć wspólnego z IT? Ano moe mieć…
Podobno faceci znają kolory biały, czarny, ładny i … brzydki. A ile jest kolorów podstawowych zdaniem kobiet? Chyba właśnie tytułowe 500+. Na dodatek te 500+ kolorów ma swoje nazwy!
Zajrzyj tutaj: http://cloford.com/resources/colours/500col.htm
A wszystko to odkryłem przy okazji zabawy z ISE i ustawiania kolorków tła. Np poniższa komenda zmienia kolor panelu skryptu np na palegoldenrod, który wygląda o tak:

A czy Ty lubisz kolor palegoldenrod?