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

SQL PASS SUMMIT 2016 – PASSTV

2016-11-10

PASS_2016_Website

Wprawdzie konferencja PASS Summit 2016 już się zakończyła i trwają już zapisy na PASS Summit 2017, to jednak jeśli chcesz zobaczyć o czym mówiło się na konferencji, masz do dyspozycji PASS TV:

http://www.sqlpass.org/summit/2016/PASStv.aspx

Konferencja trwa 3 dni i jednocześnie odbywa się około 8 sesji. Wszystkie sesje są nagrywane i można je kupić na PASS Summit-owym pendrive. PASS TV prezentuje kilka wybranych sesji całkiem za darmo.

 

By Rafał Kraik in Aktualności

PowerShell i SQL 20 – modyfikacja danych

2016-11-06

Oczywiście po to jest baza danych aby przechowywać w niej rekordy. Oto jak można dodawać, wyświetlać, modyfikować i usuwać rekordy:

Dodawanie rekordów

Zaczynamy od zwykłego polecenia SQL –  INSERT. Treść tego polecenia umieszczamy w zmiennej tekstowej.  Następnie jak zwykle tworzymy obiekt serwera i bazy danych. Obiekt bazy danych posiada metodę ExecuteNonQuery, która takie polecenie INSERT wykona na serwerze zwracając tylko informację, czy polecenie się udało czy nie.

 $sql = "INSERT INTO Test2 VALUES ('First'),('Second'),('Third')"
$SqlServer = New-Object Microsoft.SqlServer.Management.SMO.Server 'SQL01'
$db = $SqlServer.Databases["tempdb"]
$db.ExecuteNonQuery($sql)

Wyświetlanie rekordów – SELECT

Aby sprawdzić zawartość tabeli rozpocznij od stworzenia odpowiedniego polecenia SELECT. Mając je (i mając obiekt serwera i bazy, które zostały już utworzone w poprzednim przykładzie), można skorzystać z metody ExecuteWithResults, które przesyła zapytanie na serwer i zwraca wynik. Wynik ten to tzw. DataSet. DataSet składa się z tabel. Ponieważ nasze zapytanie zwraca tylko jedną tabelę, to wynik znajduje się w zerowej tabeli zwróconego wyniku (numeracja w PowerShell zaczyna się od zera) Czytaj dalej »