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

SQL – darmowe laboratoria

2018-07-11

Uczysz się SQL, chcesz zobaczyć jego nowe lub zaawansowane funkcje, a może to wcale nie SQL jest w zakresie twoich zainteresowań, ale jakaś inna technologia od Microsoft?

Teraz możesz skorzystać z darmowych laboratoriów https://handsonlabs-r.azurewebsites.net/

Strona pozwoli wyszukać interesujące Cie laboratorium, a po zalogowaniu zobaczysz w przeglądarce maszynę wirtualną wraz z instrukcjami po prawej. Do dzieła!

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

Helpdesk: Windows 10 – brak połączenia z Internetem tylko na jednej sieci WiFi

2018-06-25

Laptop Lenovo IdeaPad 710s:

Dostęp do Internetu uzyskuje zazwyczaj bez problemu, ale na jednej sieci Wifi:

  • łączy się
  • dostaje adres IP
  • nie ma kontaktu ani z siecią lokalną ani z Internetem

Pomagał restart routera, ale po paru godzinach, problem pojawiał sie znowu. Co pomogło?

  • Panel sterowania >> System
  • Manager urządzeń
  • Poszukać kart sieciowych, u mnie to

  • W ustawieniach karty „zaawansowane” oba ustawienia dotyczące 802.11 n zmieniłem na 20MHz Only

Restart karty zrobił się sam i działa, że mucha nie siada!

By Rafał Kraik in Helpdesk

PowerShell: ErrorActionPreference, a kontynuacja pracy komend

2018-06-09

W poniższych przykładach wysyłamy zapytanie WMI do do komputera CantorXX (który nie istnieje) i localhost (który oczywiście istnieje i odpowiada poprawnie)

CONTINUE

To domyślna wartość ErrorActionPreference. Jak widać na obrazku poniżej polecenie po napotkaniu błędu zgłasza ten błąd, ale potem KONTYNUUJE i kontaktuje się z drugim komputerem

SILENTLYCONTINUE

Przy połączeniu do pierwszego komputera oczywiście dochodzi do błedu, ale nie jest on wyświetlany. Błąd jest „zamaiaty pod dywan” a potem program kontynuuje i wysyła zapytanie do drugiego komputera

STOP

W przypadku tego ustawienia skrypt zareaguje „alergicznie”. Pierwszy błąd i akcja się zatrzymuje. Nie udało się połączyć z pierwszym komputerem, to z kolejnymi nawet nie próbuję:

INQUIRE

To taki trochę dziwny tryb. W przypadku błędu komenda zatrzymuje się i pyta, tylko w sumie o co…? Pytanie jest o kontynuację. Jeśli nei chcesz kontynuować daj „Halt command”, a jeśli chcesz wejść w tryb debug – daj Suspend.

 

By Rafał Kraik in Power Shell