Skocz do zawartości

Tworzenie w systemie sprzedaży dokumentu końcowego do transakcji 'xxx': Błąd zapisu do bazy danych.


Zobacz rozwiązanie Rozwiązane przez Mamut Maniek,

Polecane posty

Co jakiś czas dostaje taki błąd. Ktoś się spotkał z podobnym problemem? Robię odbudowę indeksów i statystyk na bazie danych ale to nic nie daje. Pełna wersja serwera SQL ma zapas zasobów (CPU, RAM, HDD).

Tabele z identyfikatorami nie mają błędów w bazie Sello.

Ogólnie kiedyś robiliśmy tak, że na kilku instancjach Sello tworzyliśmy dokumenty (kilka serii na raz) i działało bez problemu. Teraz jak tak zrobimy to właśnie wywala nam tworzenie dokumentów.

Link to postu
  • 2 tygodnie później...
  • Rozwiązanie

Wykonałem to zapytanie:

UPDATE STATISTICS dok__Dokument WITH FULLSCAN

i pomogło


Dodatkowo przeglądałem w raportach bazy danych oczekujące transakcje i natrafiłem na sesje dotyczącą programu ".Net SqlClient Data Provider". To nie czasem proces powiązany z Sello, które łączy się Subiekt GT?

Zmartwiło mnie zapytanie, które tam się wyświetliło czyli:

SELECT * FROM kh__Kontrahent  WHERE kh_Symbol LIKE 'Sello_Client:123456789'

jest ono trochę nie wydajne, bo znak "_" jest traktowany w formule LIKE jako jeden JAKIKOLWIEK znak i np. takie zapytanie wykonuje się kilka sekund

Sprawdziłem to samo zapytanie tylko wyeskejpowane czyli:

SELECT * FROM kh__Kontrahent  WHERE kh_Symbol LIKE 'Sello\_Client:123456789' ESCAPE '\'

i wykonało się "od strzała"


Wiem, że Sello już nie jest aktualizowane ale zostawiam to jako taki opis mojej analizy.

image.png.d993de1127cece47707f731b0f9da45f.png

Zmieniłem też w Sello przedrostek dla kontrahentów w Subiekt GT i na dla przyszłych transakcji już powinno być ok.

Zamiast 

Cytat

Sello_

dałem

Cytat

Sello:

image.png.5402bea58978f8d457f4d38ae9d5b048.png

Edytowane przez Mamut Maniek
  • Dziękuję 1
Link to postu

Dzięki, że zwróciłeś na to uwagę. W zasadzie z zastępowania pojedynczego znaku nie korzystałem osobiście chyba nigdy i z jakiegoś powodu byłem przekonany, że tym znakiem nie jest _ tylko ? :) - dlaczego? Nie mam pojęcia.

 

Zweryfikujemy czy w Sello NX takiego problemu nie będzie, bo pewna część synchronizatora została tam przeniesiona z Sello 1.

Link to postu
4 minuty temu, Bartosz Rosa napisał:

tym znakiem nie jest _ tylko ?

https://www.w3schools.com/sql/sql_like.asp

 

No właśnie na tego LIKE trzeba bardzo uważać. Ja też kiedyś po czasie zorientowałem się jak działa ten znak "podłogi" i potem musiałem przepatrzeć wszystkie zapytania, które napisałem, które zawierały frazę LIKE i dodać frazę ESCAPE

 

Jeszcze proszę potwierdź, czy domyślny prefiks w Sello dla nowego kontrahenta to właśnie `Sello_` ?? Bo zastanawiam się czy kiedyś tego sam nie wpisałem czy po prostu było tak od zawsze.

  • Lubię to 1
Link to postu

Bardzo możliwe, że taki był pierwotnie ale potem został skrócony, ze względu na to, że Sello_Client:1235678990 wychodził poza długość symbolu w Subiekcie GT i ucinanie końcówki powodowało problem z duplikowaniem się symboli (a są one graniczone do 1000 duplikatów z sufiksem).

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...