SQL CLR: Funkcja z context connection=true kończy się błędem

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 »

By Rafał Kraik in SQL

Helpdesk: Windows 10 (1803) – nie działa udostępnianie plików

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

By Rafał Kraik in Helpdesk

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