2018-10-07
Tutorial krok po kroku, jak podpisać i zaiportować moduł CLR
W tym artykule pokażę jak od A do Z zaimplementować w .NET dwie metody służące do listowania plików i katalogów i zaimportować te funkcje do SQL 2017 z uwzględnieniem aktualnych best practice (z opcją 'clr strict security’). Czym jest ta opcja i jakie ma działanie zobacz w https://www.mobilo24.eu/sql-clr-w-wersji-2017opcja-clr-strict-security/
Utwórz klasę w Visual Studio (uwaga – koniecznie wybierz Class Library .NET) – inaczej nie będzie do dyspozycji wszystkich wymaganych referencji (https://stackoverflow.com/questions/48130887/visual-studio-not-recogonizing-microsoft-sqlserver-namespace):

Napisz swój kod, co może wyglądać o tak: Czytaj dalej »
2018-10-07
SQL 2017 wprowadził pewną zmianę w zakresie CLR.
Otóż od tej pory bardzo wiele zależy od opcji 'clr strict security’ (konfigurowana przez sp_configure).
Jeżeli jej wartość to „0” (NIEZALECANE), to wszystko działa po staremu, tzn.:
- każdy assembly posiada swój permission set, który może być równy:
- SAFE – nie wychodzimy poza „proces” – jakieś dane dostaliśmy na wejściu i je przetwarzamy
- EXTERNAL ACCESS – możliwe jest korzystanie z zasobów zewnętrznych, jak np. sieć lub system plików
- UNSAFE – można wywołać kod niezarządzany
- żeby zaimportować moduł SAFE właściwie nie trzeba wykonywać żadnej specjalnej konfiguracji,
- ale dla EXTERNAL ACCESS lub UNSAFE należy:
- podpisywać assembly certyfikatem lub kluczem asymetrycznym (ZALECANE)
- lub ustawiać parametr TRUSTWORTHY dla bazy na ON a właścicielem bazy powinien być login z uprawnieniem UNSAFE ASSEMBLY (NIEZALECANE)
Jeżeli wartość parametru to 1 (ZALECANE), to permission set nadal należy określać, ale… nie służy on już do niczego. Każdy assembly będzie traktowany i tak jako UNSAFE, a do uruchomienia kodu musisz podpisać kod (ZALECANE) lub zmienić TRUSTWORTHY na ON (NIEZALECANE).
Ponieważ TRUSTWORTHY ustawione na on może naruszać bezpieczeństwo systemu, oczywiście zaleca się stosowanie podpisywania kodu.
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/clr-strict-security?view=sql-server-2017
2018-09-30
Funkcja została zdefiniowana w dość prosty sposób:
[SqlFunction(DataAccess = DataAccessKind.Read,
SystemDataAccess = SystemDataAccessKind.Read)]
public static int GetDBCount()
{
using (SqlConnection conn
= new SqlConnection("context connection=true"))
{
conn.Open();
SqlCommand cmd = new SqlCommand(
"SELECT COUNT(*) AS 'NumberOfDatabases' FROM sys.databases", conn);
return (int)cmd.ExecuteScalar();
}
}
Niestety jej wykonanie kończyło się błędem:
This statement has attempted to access data whose access is restricted by the assembly. Czytaj dalej »
2018-09-27
Jeden z komputerów z Windows 10 na pokładzie przestał być widoczny dla innych maszyn w sieci. Najbardziej bolesne było to, że na ten komputer miały trafiać skany z drukarki, która była skonfigurowana do zapisywania plików w udostępnianym katalogu na tym komputerze.
Po ciężkiej walce w której zmieniałem dziesiątki różnych ustawień doszedłem do następujących najważniejszych zmian, które spowodowały, że komputer się znowu pokazał.
W services.msc należało włączyć kilka usług (pewnie wymieniam ich tu za dużo, ale sam nie wiem, która zmiana w końcu pomogła):
- [x] Klient DNS (DNSCache)
- [x] Odnajdywanie SSDP (SSDPSRV)
- [x] TCPIP Netbios (lmhosts)
- [x] Publikowanie nazw komputerów PNRP (PNRPAutoReg)
- [x] Publikacja zasobów odnajdywania funkcji (FDResPub)
- [x] Host dostawcy odnajdywania funkcji (fdPHost)
Jeśli udostępnianie ma być włączone dla urządzeń bez Windows, jak np. Linux lub po prostu drukarka zapisująca na zasób sieciowy (mój przypadek), to dodatkowo wykonaj:
Panel sterowania >> Programy i funkcje >> Dodaj usuń składniki systemu windows
[x] – zaznaczyć „Usługa udostpniania plików SMB 1.0/CIFS„
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 »
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 »
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!

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!