SSAS: Powershell: Raport o wielkości baz danych

2018-09-12

W świecie SQL do raportu dotyczącego wielkości baz danych, zupełnie naturalne jest wykorzystanie poleceń języka TSQL.

W świecie SSAS odpowiednikiem tego języka jest XMLA. Czy to nie dziwne, że polecenia/zapytania buduje się w XML. No cóż – tak to ktoś wymyślił i nie zmienimy tego. Na pewno nie da się do SSAS wysłać zapytania SQL.

Co w takim razie zrobić kiedy trzeba zaraportować wielkość baz danych w SSAS? Z pomocą przyjdzie moduł, za pomocą którego można w bardzo prosty sposób (jeśli choć trochę się zna powershella) wysłać zapytanie do SSAS i skonsumować wynik w postaci obiektów o intuicyjnych właściwościach. Oto funkcja, która pobiera informacje o bazach danych SSAS i raportuje ich rozmiar i status:

function Get-SSASDBSize
{
    param($ServerName="localhost")
    $loadInfo = [Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")

    $server = New-Object Microsoft.AnalysisServices.Server
    $server.connect($ServerName)
    if ($server.name -eq $null) {
     Write-Output ("Server '{0}' not found" -f $ServerName)
     return
    }

    foreach ($d in $server.Databases )
    {
     Write-Output ( "{0}; {1}; {2};  {3}MB" -f $ServerName, $d.Name, $d.State, ($d.EstimatedSize/1024/1024).ToString("#,##0") )
    } 
}

Prawda, że krótkie? Po kolei: Czytaj dalej »

By Rafał Kraik in SSAS

SQL: Testowanie dysku pod SQL: diskspd (Disk speed)

2018-09-06

Czasami instalujemy SQL na tym co mamy. Pojawił się serwer i ktoś oczekuje, że zainstalujesz na nim silnik bazy danych. Istalujesz i już. Czasami jednak i na szczęście zdarza się to coraz częściej klient jest zainteresowany nie tylko zainstalowaniem serwera ale i jego wydajnością. Kluczowym parametrem determinującym pracę serwera jest prędkość dysków. Chyba dla każdego dysku da się tak zbudować test, w którym ten dysk wypada najlepiej i… to jest pewnie to, co robią producenci. Nam, administratorom, zależy jednak raczej na empirycznym i dość obiektywnym sptawdzeniu wydajności systemu dyskowego.

Jednym z programów, który może dla nas taką wstępną analizę przeprowadzić jest Disk Speed – https://gallery.technet.microsoft.com/DiskSpd-A-Robust-Storage-6ef84e62

Programu nie trzeba instalować – to wielka zaleta, bo instalacja programu na systemie produkcyjnym to czynność, którą ty – administrator bazy – być może musiałbyś uzgodnić z administratorem systemu operacyjnego. Program dostępny po prostu w postaci pliku exe jest wiec w tej sytuacji wygodniejszy.

Zaraz dokładniej omówię parametry, ale zrobimy to na przykładzie konkretnego testu:

.\diskspd.exe -b64K -d30 -t8 -o8 -h -r -w20 -L -c2G test_002.dat> diskspeed_report.txt

-b64K – oznacza rozmiar bloków w jakich są wykonywane operacje. Ponieaż zalecany rozmiar dysku dla SQL to 64 KB (rozmiar extentu = 8 * 8 KB) to wybór tej wartości przy testowaniu dysku pod SQL jest trafny Czytaj dalej »

By Rafał Kraik in SQL

Kurs data science: „Analiza danych w Python i PANDAS” za free!

2018-08-28

Od dzisiaj na platformie Udemy dostępny jest kurs „Analiza danych w Python i PANDAS”. Z tej okazji przez krótki czas kurs będzie dostępny za darmo! To taki give-back dla społeczności, bez której samodzielne rozwiązywanie wielu problemów byłoby koszmarne.

Jeśli zdążyłeś/aś to poniższy link pozwoli na darmowe zapisanie się na szkolenie. Jeśli kurs został już sklasyfikowany jako płatny, to z tym linkiem możesz go kupić w najniższej możliwej cenie.

Zapisz się na kurs Analiza danych w Python i PANDAS!

Kurs Analiza danych w Python i PANDAS

A co w samym  kursie?

  • Przygotowanie środowiska do analizy danych
  • Wprowadzenie do modułu PANDAS
  • Obiekt Data Series
  • Obiekt Dara Frame
  • Modyfikacja danych
  • Multiindex i tabele przestawne
  • Grupowanie danych
  • Łączenie danych z wielu obiektów data frame
  • Wykresy
  • Export i import danych

W sumie ponad 13 godzin materiału wideo, a do każdej lekcji quiz i zadania do samodzielnego rozwiązania (z propozycją rozwiązań)

Zapraszam do świata Data Science!

SQL: Service Broker: Winsock Error 10060: A connection attempt failed because the connected party did not properly respond

2018-08-22

Pełny komunikat błedu:

Winsock Error 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Właściwie objaw Service Brokera był taki, że „nie działa”. W takim przypadku, jeśli tylko nie widać innych błędów (jak np. przepełniony log bazy danych z brokerem), należy będąc w tej bazie danych uruchomić polecenie:

SELECT * FROM sys.transmission_queue

Ostatnia kolumna z opisem statusu zawierała w/w komunikat. Komunikacja wysyłana przez service broker po prostu czeka, aż komunikaty uda się przesłać. Potencjalne przyczyny to:

  • wyłączony docelowy host
  • firewall między maszynami
  • firewall lokalnie włączony na zdalnej maszynie
  • itp – generalnie zawsze błąd na poziomie łączności na porcie

W tym przypadku został włączony firewall… Po zdefiniowaniu reguły na firewall komunikaty zaczęły po prostu spływać same 🙂

By Rafał Kraik in SQL

SQL Service Broker: Dialog security is unavailable for this conversation because there is no security certificate…

2018-08-20

Pełny komunikat błędu:

Dialog security is unavailable for this conversation because there is no security certificate bound to the database principal (Id: 5). Either create a certificate for the principal, or specify ENCRYPTION = OFF when beginning the conversation.

Kiedy Service Broker nawiązuje połączenie to wykonuje to za pomocą kilku obiektów bazy danych takich jak sama usługa Service Broker, kolejka, konwersacja itp. Te obiekty mają swojego właściciela – jak wszystko w bazie danych więc jest to całkiem normalne. Jednak w Service Broker pod spodem działają certyfikaty – te służą do uwierzytelnienia. Niestety, jeśli coś majstrowałeś przy certyfikatach to takie powiązanie mogło się stracić. A jest ono dosyć proste

  • obiekt należy do użytkownika
  • użytkownik ma być zbindowany do certyfikatu

Sprawa będzie prosta.

Użytkownik powinien był być utworzony jakoś tak:

CREATE USER  …   WITHOUT LOGIN;

a certyfikat jakoś tak:

CREATE CERTIFICATE …   AUTHORIZATION [tutaj nazwa użytkownika] FROM  FILE=’…’

U mnie zadziałało od strzału!

Pomocny link:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8591016f-a1ca-43be-ab33-fddbcdec06b0/error-message-dialog-security?forum=sqlservicebroker

 

By Rafał Kraik in SQL

SQL: Service Broker Connection handshake failed. The certificate used by the peer is invalid

2018-08-20

Pełna treść komunikatu z błędem to:

Connection handshake failed. The certificate used by the peer is invalid due to the following reason: Certificate not found. State 89

Istotne przy konfiguracji usług związanych z Service Brokerem opartym o certyfikaty jest to, że często nie liczy się nazwa certyfikatu, ale jego thumbprint (odcisk palca). Kiedy dwa serwery nawiązują połączenie jeden z nich mówi:

  • chcę się połączyć z Tobą korzystając z certyfikatu XYZ
  • a drugi serwer odpowiada – fajnie mam certyfikat XYZ i mam do niego klucz prywatny,  zacznijmy od autoryzacji….

W moim przypadku na tych dwóch rozmawiających serwerach były zainstalowane certyfikaty o tej samej nazwie, ale niestety były to kompletnie inne certyfikaty! Ich odciski palców się nie zgadzały!

Aby sprawdzić czy certyfikaty są takie same wykonałem na obu instancjach:

select * from sys.certificates

a potem porównałem pole thumbprint. Ponieważ się nie zgadzały wyeksportowałem certyfikat z jednego serwera (BACKUP CERTIFICATE – tylko klucz publiczny) i odtworzyłem go na drugim (CREATE CERTIFICATE…. FROM FILE=’..’). Ponieważ do certyfikatu był przywiązany jeszcze login, to i ten login  musiałem usunąć i odtworzyć.

Certyfikat występował w moim przypadku w bazie master (poziom instancji) i w bazie skonfigurowanej pod service broker. Wymieniłem go w obu miejscach

Pomocny link:

https://social.msdn.microsoft.com/Forums/Lync/en-US/7b4d9350-cf72-4d25-83d5-db39f1bb1c01/connection-handshake-failed-the-certificate-used-by-the-peer-is-invalid-due-to-the-following?forum=sqldatabasemirroring

By Rafał Kraik in SQL

Python/Pandas: Testowe dane. Linki do dataset

2018-07-08

Tym razem tylko porcja linków, pod którymi można znaleźć przdatne dane do testów i nauki Pythona i Pandas:

 

 

By Rafał Kraik in Python