SQL Server: problem z odtworzeniem bazy z in memory

2020-03-15

Podczas odtwarzania bazy WideWorldImporters pojawiał się błąd, a właściwie cała seria błędów:

  • An error occurred during recovery, preventing the database ‚WideWorldImporters’ (7:0) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.
  • [WARNING] ALTER or DROP TABLE could not clean up root row within 10 seconds.
  • [ERROR] HkHostRecoverDatabaseHelper::ReportAndRaiseFailure(): Database ID: [7] ‚WideWorldImporters’. Failed to load XTP checkpoint. Error code: 0x82000018. (sql\ntdbms\hekaton\sqlhost\sqlmin\hkhostdb.cpp:5740)
  • restoreHkDatabase: DbId 7, Msg 41316, Level 16, State 0, Restore operation failed for database ‚WideWorldImporters’ with internal error code ‚0x82000031’.
  • [ERROR] HkRtRestoreDatabase(): Recovery failed with error 0x82000031 on database 7. This error will be mapped to ‚HK_E_RESTORE_ABORTED’ (0x82000018). (sql\ntdbms\hekaton\runtime\src\hkruntime.cpp:5505)
  • The code generation directory cannot be created or set up correctly.
  • Creation of directory \\?\F:\data\xtp failed for reason 3.
  • [INFO] HkCkptLoadInternalEx(): Database ID: [7]. Root file: {3E231B6B-9EF1-4AE3-A1DB-BD01DC866DD9}, watermark: 40, RecoveryLsn: 00000272:00005EC4:0002, RecoveryCheckpointId: 4, RecoveryCheckpointTimestamp: 0xb

Czytaj dalej »

By Rafał Kraik in SQL

VirtualBox – błąd: WHvSetupPartition failed – VERR_NEM_VM_CREATE_FAILED

2020-03-01

Korzystanie z techik wirtualizacji to na dzisiaj konieczność. Zazwyczaj korzystam z Hyper-V, który jest licencjonowany razem z systemem operacyjnym, więc jeden kłopot z głowy.

Do zastosowań prywatnych są jednak dostępne rozwiązania VirtualBox lub VMPlayer. Od czasu do czasu trzeba więc skorzystać z jednej lub innej technologii. I tu może się pojawić konflikt.

Podczas uruchamiania maszyny wirtualnej pod VirtualBoxem pojawił się błąd:

WHvSetupPartition failed – VERR_NEM_VM_CREATE_FAILED

Najwyraźniej jest to powodowane właśnie obecnością innych „wirtualizatorów”, bo wykonanie polecenia:

i restart komputera pomogły!

By Rafał Kraik in Helpdesk

SQL: Query Store 1 – Konfiguracja

2020-02-22

Kiedyś zapytanie działało dobrze, a teraz działa gorzej? Co się zmieniło, że spadek wydajności jest zauważalny?

Nie ma na to jednej odpowiedzi, bo do kroków analizy należałoby dodać także sprawdzenie dostępnej ilości RAM, szybkości dostępu do dysków itp. O ile jednak administratorzy z tymi testami zazwyczaj problemów nie mają, o tyle sprawdzanie wydajności z dokładnością do pojedynczego zapytania zwykle było pewnym problemem. Rozwiązaniem, które ma w tym pomóc jest Query Store dostępny w SQL Server od wersji 2016.

Dzięki zbieranym statystykom na temat zapytań, administrator może porównać plany zapytań jakie były wykorzystywane pewien czas temu z tymi, jakie są wykorzystywane teraz, a nawet określić, który plan zapytania ma być stosowany. I to wszystko odbywa się bez ingerencji w plan zapytania!

Oto jak skonfigurować Query Store

Query Store może być włączony na poziomie bazy danych:

Korzystając z polecenia alter można zmieniać konfigurację Query Store: Czytaj dalej »

By Rafał Kraik in SQL

Python: Numpy: Broadcasting na przykładach

2020-01-15

W uczeniu maszynowym często wykonujemy operacje na macierzach (wektor to też przykład macierzy, tylko że jeden z wymiarów wynosi 1). Cchcemy takie operacje wykonywać, gdzie tylko się da przy pomocy funkcji z modułu numpy, bo tak jest efektywniej!

Matematyka jest bezlitosna. Istnieją pewne określone reguły, określające warunki kiedy na macierzach można wykonywać operacje:

  • aby dodać do siebie macierze/wektory, muszą one mieć takie same wymiary
  • aby pomnożyć przez siebie dwie macierze, pierwsza z nich musi  mieć tyle kolumn, co druga wierszy

Tymczasem u nas te warunki nie zawsze będą spełnione. Można się jednak „umówić”, co do tego jak wykonywać operacje, których, matematycznie rzecz ujmując, nie można wykonywać. Taki mechanizm w numpy nosi nazwę broadcasting, bo określa on, jak należy powiększyć mniejszą macierz do rozmiarów pasujących do większej macierzy, aby w intuicyjny sposób wykonać operację na macierzach.

Żeby uniknąć matematycznego hejtu, na usprawiedliwienie należy dodać, że broadcasting-u można by uniknąć. W takim przypadku programista musiałby po prostu samodzielnie dbać o to, żeby macierze miały właściwe rozmiary. Taka praca, nie dość że nudna, to jeszcze spowoduje znaczne użycie pamięci. Dlatego tak się palimy do zautomatyzowanego i zoptymalizowanego procesu broadcastu. Czytaj dalej »

Linux: Błąd: FATAL no config space access function found

2020-01-15

Błąd pojawiał się na Centos 8 zainstalowanym pod Hyper-V. Cała instalacja przebiegła pomyślnie, ale po restarcie pokazywał się tylko komunikat

FATAL: no config space access function found

Co bardzo ważne, serwer był instalowany razem z grafiką i to właśnie problem z którymś ze sterowników powodował błąd. Wystarczyło przełączyć się do innej konsoli (CTRL+ALT+F2) i zaktualizować:

Inna kwestia, że oprócz nie działającej grafiki, również i klawiatura działała wolno…. dlatego zdecydowałem się uruchomić serwer w run level 3

O tym pisałem już tutaj

By Rafał Kraik in Linuxy

Hyper-V: Instalacja Centos 8: The image’s hash and certificate are not allowed

2020-01-15

Podczas instalacji Centos na Windows 10 z HyperV pojawil się komunikat:

The image’s hash and certificate are not allowed (DB)

Plik z instalają był pobrany z pewnego źródła, więc komunikat był trochę zastanawiający….

Przyczyną była opcja „Enable Secure Boot”, która jest domyślnie zaznaczona na nowej maszynie wirtualnej. Żeby ją wyłaczyć należy wejść w ustawienia maszyny wirtualnej, w sekcji Security odszukać zaznaczonej opcji „Enable Secure Boot”, odznaczyć ją, zapisać zmiany i gotowe!

By Rafał Kraik in Linuxy

Python: Debugowanie graficzne w Jupyter Notebook

2020-01-07

We wpisie https://www.mobilo24.eu/python-debugger-…k-postac-znakowa/ pokazywałem w jaki sposób debugować kod w Jupyter Notebook z wykorzystaniem starego znakowego debugera pdb. Teraz pora na bardziej klikalne rozwiazanie.

Zaczynamy od zainstalowania pakietu pixiedust. W tym celu w anaconda prompt wykonaj polecenie:

Teraz już w Jupyter Notebook należy załadować moduł odpowiedzialny za debugowanie:

Kiedy chcesz rozpocząć debugowanie kodu dodaj do niego linijkę %%pixie_debugger, o tak:

Po uruchomieniu tej komórki, zostanie pod nią wyświetlony interfejs debuggera:

Nie wchodząc zbytnio w szczegóły pierwszy pomarańczowy przycisk uruchamia kod dalej (run), drugi – ze strzałką wykonuje jedną linijkę kodu itd. Warto po prostu poczytać dymki widoczne w tych raptem kilku widocznych poleceniach.

Kiedy chesz sprawdzić wartość wyrażenia korzystasz z evaluate:

A kiedy chcesz zatrzymać program w określonej linijce, kliknij na numerze tej linijki myszką. W ten sposób zdefiniujesz breakpoint symbolizowany ikonką rozdeptanego  robaka na marginesie. Numer linii będzie można też zobaczyć w okienku Breakpoints.

I co? Nie da się? Da się, tylko może jest potrzebnych kilka dodatkowych kroków!

 

By Rafał Kraik in Python