Update dla SQL Server. GDR/QFE

2014-09-29

Aktualizacje SQL Server mogą odbywać się w dwóch trybach:

  • Quick Fix Engeneering (QFE)
  • General Distribution Release (GDR)

Czym to się różni? Są to ścieżki kolejnych buildów SQL, podążając którymi można podnosić wersję serwera. Jeśli wybierasz ścieżkę GDR, tzn. że będziesz instalował wyłącznie Service Packs. Natomiast nie przejmujesz się Hot Fixami lub Cummulative Updates. Pamiętaj, że Hot Fix oraz paczka hotfixów zwana Cummulative Update jest o wiele słabiej testowana. Wiele organizacji nie chce (o ile nie musi) instalować CU i świadomie wybiera ścieżkę GDR. Jeżeli w pewnej chwili pojawi się potrzeba zainstalowania CU, po prostu zrób to. Wskoczysz w ten sposób na ścieżkę QFE. Będzie można z niej zejść, jeżeli pojawi się service pack. Instalacja Service pack przenosi cię ponownie do GDR.

A co to jest QFE? W tym przypadku aktualizujesz SQL instalując Cummulative Updates. Pamiętaj, że każdy kolejny CU posiada wszystkie zmiany wprowadzone w poprzednich CU. W pewnym momencie MS wyda service pack i wtedy należy zainstalować service pack i wskoczyć znowu do GDR.

SQL posiada numery build. Numer do 3149 oznacza, że masz SQL GDR. Wartość powyżej 3150 oznacza, że jesteś w QFE. Jeżeli pojawia się Security Update, to znajdziesz oddzielne pakiety KB do zaktualizowania GDR i QFE. Instalacja pakietu QFE na GDR się uda, przenosząc cię do ścieżki QFE. Próba instalacji KB z GDR na systemie podążającym ścieżką QFE zakończy się komunikatem, mówiącym, że posiadasz nowszą wersję… Dlaczego?

Załóżmy, że KB do instalacji podnosi numer builda w GDR do 1300, a w QFE do 4000. Jednak każdy system w ścieżce QFE ma numer builda większy niż 3150. Instalując więc na nim KB podnoszący build do 1300 obniżylibyśmy numer! Stąd komunikat…

http://support2.microsoft.com/kb/935897

http://blogs.msdn.com/b/gauravagg/archive/2007/04/27/jargons-gdr-and-qfe-release.aspx

By Rafał Kraik in SQL

Agent Job: Wysłanie powiadomienia do wielu operatorów (na wiele adresów email)

2014-09-26

Kończy się job i chcesz wysłać maila na kilka adresów pocztowych… Wszystko fajnie, ale… na karcie Notification po zakończeniu joba można powiadomić tylko jednego operatora.

job2 Czytaj dalej »

By Rafał Kraik in SQL

Zmiany w certyfikatach MCSA Windows 2012 i MCSA SQL 2012

2014-09-18

Microsoft wprowadził zmianę w zakresie certyfikacji MCSA, wydaje się że korzystne. Aby zdobyć MCSA należy zdać dwa egzaminy obowiązkowe (np. dla SQL 461 i 462), a następni jeden z listy do wyboru 411 lub 412 lub 463 lub 483. ładniej prezentuje to ilustracja:

certyfikaty

Więcej informacji:

http://borntolearn.mslearn.net/btl/b/weblog/archive/2014/09/15/electives-for-windows-server-2012-amp-sql-server-2012-mcsa-certifications-now-available.aspx

Zmiana wchodzi w życie od 15 IX

 

Strona MCSA SQL 2012:

https://www.microsoft.com/learning/pl-pl/mcsa-sql-certification.aspx

 

Powershell – analiza pliku z regex i switch

2014-09-17

Masz plik tekstowy o następującej zawartości:

server1.warsaw.pl
server2.berlin.de
server3.krakow.pl
serwer4.gdansk.pl
serwer5.tokyo.jp

Chcesz wczytać go i jeżeli linijka kończy się na PL wyświetlić napis POLSKA, a jeśli adres kończy się na DE wyświetlić napis NIEMCY. Jeśli napis nie kończy się ani na PL ani na DE, należy wyświetlić INNY.

Dobrze  nadaje się do tego switch. Switch może wczytać plik oraz dokonać analizy wyrażeniem regularnym. Zadanie jest rezliowane np. przez następujący skrypt:

switch -file .\servers.txt -Regex
{
„.+\.pl$” {Write-Host „POLSKA” -BackgroundColor Red}
„.+\.de$” {Write-Host „NIEMCY” -BackgroundColor Yellow}
default {Write-Host „INNY” -BackgroundColor Blue}
}

-file instruuje switch, że dane wejściowqe należy wczytać z pliku

-regex mówi o tym, że decyzja o wykonaniu odpowiednij instrukcji switch będzie podejmowana w oparciu o dopasowanie do wyrażenia regularnego.

„.+\.pl$” to wyrażenie regularne określające teksty składające się co najmniej z jednej litery, a za nią ciągu.pl

Efekt skryptu z naszymi danymi wejściowymi:

domeny

 

By Rafał Kraik in Power Shell

Powershell i wyrażenia regularne

2014-09-17

Dajmy na to, że masz listę numerów telefonów:

$list = '+48 123456789′,’123456789′,’0048 123456789′,’+48123456789′

Chcesz z niej wylistować tylko te, które mają budowę:

  • +48 123456789 lub
  • 0048 123456789

Czyli na początku +48 lub 0048, po czym występuje spacje i 9 cyfr. Odpowiada za to maska \+48 [0-9]{9}|0048 [0-9]{9}

Definiujemy więc zmienną $mask:

$mask = [regex]”\+48 [0-9]{9}|0048 [0-9]{9}” Czytaj dalej »

By Rafał Kraik in Power Shell

Wyrażenia regularne – bardzo krótki przewodnik

2014-09-17

Kiedy musisz przeszukiwać teksty, dopasowywać je do maski, szybko okaże się, że metaznaki * i ? znane chociażby jako symbole jednoznaczne rozumiane przez system operacyjny podczas operacji na plikach nie są wystarczające. I wtedy z pomocą przychodzą wyrażenia regularne, a wraz z nimi dziesiątki i setki zupełnie nowych problemów….

Najprostsze wyrażenie regularne to – dokładnie ten sam napis, który chcesz dopasować np.

Tekst Janosik pasuje do wyrażenia regularnego Janosik

Budując wyrażenia regularne możesz korzystać z symboli specjalnych. Należą do nich

\^$.*+|?()[]{}

Dokładniej ich znaczenie opisujemy poniżej:

\ backslash

Pozbawia symbolicznego znaczenia kolejnego znaku. Aby stworzyć wyrażenie do którego pasuje tekst 1+2 chciałoby się skorzystać z wyrażenia regularnego 1+2 ale przecież + ma inne znaczenie (przedstawimy je dalej). Dlatego należy pozbawić + tego specjalnego znaczenia. Poprawne wyrażenie regularne to więc 1\+2 Czytaj dalej »

SQL: Zapytanie do AD

2014-09-15

Podziękowania dla Tomka i Rafała, którzy podsunęli to rozwiązanie 🙂

Potrzebujesz w SQL listę użytkowników z AD. To proste. Definiujesz linked server wskazujący na usługi AD, apotem piszesz zapytania:

Linked_Server_AD_01

Do połączenia użyj poświadczeń aktualnego użytkownika

Linked_Server_AD_02

No i gotowe. Można pisać zapytania do AD:

SELECT displayname, samaccountname
FROM OPENQUERY( ADSI, 'SELECT extensionAttribute3,SAMAccountName,displayname FROM ”LDAP://intranet.domain/OU=Folder3,OU=Folder2,OU=Folder1,DC=intranet,DC=domain”
Where objectCategory = ”Person” AND objectClass = ”user” AND department=”Departament name”’)

By Rafał Kraik in SQL