SQL: Management Studio – błąd podczas uruchamiania Activity Monitora: Access Denied HRESULT: 0x80070005 (E_ACCESSDENIED)) (mscorlib)

2021-05-16

Pełny komunikat z błędem prezentuje się następująco:

TITLE: Microsoft SQL Server Management Studio
——————————

The Activity Monitor is unable to execute queries against server XXXXXXXXXX
Activity Monitor for this instance will be placed into a paused state.
Use the context menu in the overview pane to resume the Activity Monitor.

——————————
ADDITIONAL INFORMATION:

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) (mscorlib)

 

Żeby było ciekawie, to (1) jestem sysadminem na SQL (2) jestem lokalnym administratorem na Windows. Jedna z pierwszych prób naprawy błędu „Access Denied”, to zwykle uruchomienie programu „jako administrator”. I w tym przypadku pomogło. Jednak jest to nieco dziwne, dlatego poszukałem dalej i znalazłem:

https://sqltimes.wordpress.com/tag/access-is-denied-exception-from-hresult-0x80070005-e_accessdenied-mscorlib/

Artykuł opisuje, jakie uprawnienia i gdzie należy nadać, żeby można było korzystać z Activity Monitora. Grupa administratorzy wszędzie posiadała wszystkie wymagane uprawnienia, ale kiedy na serwerze jest skonfigurowany UAC, to token grupy administracyjnej jest wyrzucany podczas uruchamiania aplikacji. To dlatego SSMS uruchomione jako zwykły użytkownik nie mogło uruchomić Activity Monitora. Kiedy jednak  SSMS uruchamiałem jako administrator, to SSMS mając token grupy administrator mogło śmiało robić wszystko co chciało.

Żeby bez problemów uruchamiać SSMS jako normalny użytkownik nadałem opisane w artykule uprawnienia i wszystko działa jak należy! W skrócie:

  • Uruchom Component Services – DCOMCNFG
  • Przejdź Console Root >> Component Services >> Computers >> My Computer >> Properties
  • Na zakładce COM Security kliknij „Edit Limits” – zarówno w sekcji „Launch and Activation Permissions” jak i „Access Permissions” i nadaj swojej grupie zarówno „Remote Launch & Remote Activation”
  •  

    W My Computer, w drzewku po lewej stronie znajdziesz jeszcze >> DCOM Config. Przejdź do Windows Management and Instrumentation >> Properties.

  • W zakładce Security w sekcji Launch and Activation Permissions kliknij Edit i jeśli nie ma tam twojej grupy, to dodaj ją i przypisz uprawnienia Remote Launch & Remote Activation

Gotowe!

By Rafał Kraik in SQL

Powershell: nasłuchiwanie na porcie. Sprawdzanie czy port jest otwarty

2021-05-11

Bezpieczene środowiska są często podzielone na mniejsze strefy rozdzielone firewallem. Za takim podniesieniem bezpieczeństwa idą jednak też pewne niemiłe konsekwencje. Aplikacje wymagają łączności, a przy zbyt restrykcyjnie skonfigurowanym firewallu, ta komunikacja może przestać działać.

Tym razem problem był następujący. SQL serwer był skonfigurowany do nasłuchiwania na porcie XXX. Powstał pomysł przejścia na port YYY. Przed zmianą numeru portu na serwerze trzeba sprawdzić, czy port Y jest rzeczywiście otwarty.

Normalnie do sprawdzenia, czy port jest otwarty można użyć

tylko… skoro na serwerze, SQL nasłuchuje na porcie XXX, to na pytanie skierowane do portu YYY nie odpowie! Trzeba by więc stworzyć jakiś proces nasłuchujący na porcie YYY, choćby tylko po to, żeby uzyskać jakąkolwiek odpowiedź na Test-NetConnection. Oto jak stworzyć taki sztuczny nasłuchujący proces:

Te polecenia utworzą proces nasłuchujący na porcie 9999 (to odpowiednik naszego portu YYYY)

Jeśli więc na serwerze uruchomisz w/w kod (i go tam zostawisz – nie zamykaj okna), to jeśli tylko porty na firewall są otwarte, to polecenie:

powinno zwrócić sukces. Jeśli jakaś reguła firewall filtruje ten port – to otrzymamy fail. Jest wiec to metoda na sprawdzenie, czy port jest otwarty przed zmianą portu na którym pracuje SQL, co nie?

A, no i pamiętajmy o wylączeniu nasłuchiwania w skrypcie powershellowym, bo port będzie zajęty 🙂

Windows: MS Edge: Szybkie scroll-owanie

2021-05-09

Rzadko na moim blogu piszę o sprzęcie, ale tym razem… nerwowo nie wytrzymywałem usterki objawiającej się w MS Edge. Scrollowanie stron działające bez zarzutu w innych przeglądarkach i aplikacjach było zdecydowanie za szybkie w MS Edge. Nie żebym był fanem jakieś konkretnej przeglądarki, ale korzystam z wielu z nich – jeśli zależy mi na przeczytaniu artykułu, który nie chce się wyświetlić z powodu ad-blocka, to szybkie przejście do innej przeglądarki pomaga.

Problem objawia się tylko w MS Edge i tylko na jednym laptopie Lenovo  (konkretnie IdeaPad 710S).  Próby ustawienia szybkości scroll-a w ustawieniach systemu, czy sterownika touchpada na nic się zdały, a przewijanie stron przez klikanie na suwaku przypominało mi fantastyczne lata 90-te.

Okazało się, że przyczyną jest sterownik touchpada ELAN Tech. To konkretne ustawienie nie jest dostępne w interfejsie. Trzeba skorzystać z edytora rejestru.

  • Przejdź do HKEY_CURRENT_USER\Software\Elantech\SmartPad
  • Odszukaj ustawienia ScrollControl_Mode i zmień jego wartość na 1
  • Następnie otwórz graficznego konfiguratora Elantech (zwykle miniaturowa ikonka jest w schowku obok zegarka), zmień jakikolwiek ustawienie i  kliknij Apply/Zastosuj.

Sterownik odczyta wartości konfiguracyjne z rejestru i – EUREKA – wszystko zadziała tak, jak należy.

Dziękuję za:

[Win10] ELAN Touchpad scrolling issues? : techsupport (reddit.com)

 

By Rafał Kraik in Helpdesk

Błąd podczas instalacji PostgreSQL: Problem ze zmienną COMSPEC

2021-04-17

Taki oto błąd może się pojawić podczas intalacji PostgreSQL na Windows:

The environment variable COMSPEC does not seem to point to the cmd.exe or there is a trailing semicolon present

COMSPEC to zmienna środowiskowa wskazująca na interpreter poleceń w systemie windows. Interpreter poleceń, to po prostu program cmd.exe. Może się zdarzyć, że wskutek jakieś innej nieudanej operacji, względnie infekcji wirusem, ta zminna może być niepoprawnie ustawiona. W takim przypadku trzeba zmodyfikować tą zmienną.

Kliknij na start >> odszukaj „Mój komputer” >> kliknij ikonkę prawym przyciskiem myszy i wybierz właściwości >> w oknie wybieraj kolejne pozycje dochodząc w końcu do poszukiwanego COMSPEC:

Po modyfikacji zrestartuj komputer

By Rafał Kraik in Helpdesk

SQL: AlwaysOn: Cloud witness: The client and server cannot communicate

2021-03-28

Podczas dodawania do quorum  świadka „Cloud Witness” dostałem błąd:

An error was encountered while modifying the quorum settings.
Your cluster quorum settings have not been changed.
The client and server cannot communicate, because they do not possess a common algorithm.

Dodajmy, że Always On był konfigurowany na Windows 2016.

Przyczyną jest to, że Azure Storage Account pozwala na połąćzenie za pomocą TLS 1.0 1.1 i 1.2, tymczasem na moich serwerach miałem wyższą wersję. Nie wiem, jak obniżyć wykorzystywaną wersję w interfejsie graficznym, ale z powershella robi się to tak:

Pierwsze polecenie obniża wersję TLS, a drugie dodaje cloud witness.

Przy okazji pojawił się też problem podczas samego konfigurowania availability group:

The local node is not part of quorum and is therefore unable to process this operation. This may be due to one of the following reasons:

• The local node is not able to communicate with the WSFC cluster.

• No quorum set across the WSFC cluster.

For more information on recovering from quorum loss, refer to SQL Server Books Online.

(Microsoft.SqlServer.Management.HadrTasks)

Zazwyczaj ten błąd oznacza rzeczywiście problem z clustrem, względnie przyczyną jest to, że we właściwościach usługi SQL w Configuration Managerze nie jest zaznaczona opcja Enable AlwaysOn Availability Groups:

Istotne jest jednak żeby ta opcja została zaznaczona PO utworzeniu clustra. Jeśli w między czasie cluster został odinstalowany i zainstalowany na nowo, to trzeba tę opcję wyłączyć (restart SQL) i włączyć (restart SQL)

 

https://docs.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/availability-group-clusterless-workgroup-configure

 

By Rafał Kraik in SQL

SQL: Uzyskanie adresu IP v4 serwera

2021-03-12

W pewnych przypadkach trzeba ustalić jaki adres IPv4 jest przypisany do serwera. Można oczywiście zajrzeć do widoku sys.dm_exec_connections

Niestety ta metoda nie zadziała jeśli połączenie jest nawiązane przez Shared Memory, albo 127.0.0.1 albo (i to mój przypadek) przez IPv6, a tymczasem potrzebowałem IPv4.

Na całe szczęście udało się znaleźć ciekawy pomysł z wykorzystaniem xm_cmdshell i prostego polecenia ipconfig

https://stackoverflow.com/questions/142142/sql-query-to-get-servers-ip-address

Oto delikatnie zmieniona procedura – u mnie działa!

By Rafał Kraik in SQL

MS Word/Office: Bład po aktualizacji. The application was unable to start correctly (0xc0000142)

2021-02-12

No cóż… zdarza się najlepszym…

Jako tako nie wiem, co się zespuło, ale dałem radę naprawić:

  • Panel Sterowania
  • Dodaj usuń programy
  • Odszukaj pakiet Office (może się różnie nazywać, bo MS dostarcza go w różnych pakietach)
  • Klinij modyfikuj
  • Wybierz napraw. U mnie były dwie możliwości naprawy – szybka i zaawansowana. Wybrałem szybką i po kawie office działał 🙂

Masz lepszy pomysł? Napisz!

By Rafał Kraik in Helpdesk