SQL: Przykładowe dane do typu GEOGRAPHY

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

World

A to następny przykład:

SELECT * FROM dbo.World WHERE COUNTRY = 'Poland’

Poland Czytaj dalej »

By Rafał Kraik in SQL

Powershell: Numer wersji funkcji i modułu

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:

module_version_powershell

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 »

By Rafał Kraik in Power Shell

HyperV: Failed while modifying virtual Ethernet Switch connection settings. 'Catastrophic failure’ 0x8000ffff

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.

internet_sharing

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

PowerShell i IIS 20: Zmiana identity w Application Pool

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 »

Powershell: Catch/try/finally: inny blok catch dla różnych rodzajów exception

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 »

By Rafał Kraik in Power Shell

SSIS: Error deploying SSIS project: A required privilege is not held by the client

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 »

By Rafał Kraik in SSIS

Powershell: 500+ nazwanych kolorów!

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:

color

 

A czy Ty lubisz kolor palegoldenrod?

By Rafał Kraik in Humor