Skocz do zawartości

Subiekt Nexo uszkodzona baza dany? InsERT.Mox.DataAccess.DataAccessException: Wystąpił błąd dostępu do danych.

Polecane posty

Witam, 

 

Wersja Nexo : 34.1.0(4320) 

Silnik Bazy danych:

Microsoft SQL Server 2019 (RTM-GDR) (KB4583458) - 15.0.2080.9 (X64)
Nov  6 2020 16:50:01
Copyright (C) 2019 Microsoft Corporation
Standard Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19041: ) (Hypervisor)

Baza podmiot:

image.png.d44d3371fcdbfcbab47a8f54909d0619.png

Ilość danych:

image.thumb.png.95c859098195de57f90d4d15bb8f123d.png

Zużycie zasobów na serwerze:

Ram: 32Gb

Procesor: i7-4790 

Dysk: SSD

image.thumb.png.c071cae6240bb3f648d519e9d6a45d59.png

image.thumb.png.e6e794cec2ed59630cae0988caa510f4.png

 

Pod bazę podpiętych jest kilka rozwiązań sferycznych. Od jakiegoś czasu wydajność subiekta diametralnie spadła. Sam interfejs Subiekta Nexo ciągle wywala się błędami typu:

image.thumb.png.5e6de92546d7c1904fcfbe891337a7b7.png

 

Błędy z poziomu sfery:

InsERT.Mox.DataAccess.DataAccessException: Wystąpił błąd dostępu do danych. ---> System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Upłynął limit czasu wykonywania. Limit upłynął przed ukończeniem operacji lub serwer nie odpowiada. ---> System.ComponentModel.Win32Exception: Upłynął limit czasu operacji oczekiwania
   --- Koniec śladu stosu wyjątków wewnętrznych ---
   w System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   w System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   w System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   w System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   w System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   w System.Data.SqlClient.SqlDataReader.get_MetaData()
   w System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   w System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   w System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   w System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   w System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   w System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   w System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   w System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.Execute(Dictionary`2 identifierValues, List`1 generatedValues, IDbCommandInterceptor commandInterceptor)
   w System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
   --- Koniec śladu stosu wyjątków wewnętrznych ---
   w System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
   w System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<>c.<Update>b__18_0(UpdateTranslator ut)
   w System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update[T](IEntityStateManager entityCache, T noChangesResult, Func`2 updateFunction, Boolean throwOnClosedConnection)
   w System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update(IEntityStateManager entityCache, Boolean throwOnClosedConnection)
   w System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__125_0()
   w System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func)
   w System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options)
   w System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)
   w InsERT.Mox.DataAccess.EntityFramework.UnitOfWorkAwareObjectContext.HandleChangesSaveRequest(Object sender, ChangesSaveRequestEventArgs args)
   --- Koniec śladu stosu wyjątków wewnętrznych ---
   w InsERT.Mox.DataAccess.EntityFramework.UnitOfWorkAwareObjectContext.HandleChangesSaveRequest(Object sender, ChangesSaveRequestEventArgs args)
   w InsERT.Mox.Work.UnitOfWork.SaveChanges2(Boolean saveRequestVetoed, Boolean changesWereSaved)
   w InsERT.Mox.Work.UnitOfWork.SaveChanges()
   w InsERT.Mox.BusinessObjects.BusinessObject`3.Zapisz()

 

 

Ilość danych jest śmiesznie niska, moim zadaniem aplikacja nie powinna w ogóle mieć problemów wydajnościowych.  Rozwiązania sferyczne są na tej samej maszynie co baza. Problemy sieciowe można pominąć. Gdzie mógłbym szukać rozwiązania tego problemu. Czy mają Państwo jakieś narzędzia diagnostyczne do badania konsystencji bazy danych? Na chwilę obecną korzystanie z subiekta staje się coraz większym wyzwaniem.

 

Z góry dziękuję ze reakcję.

image.png

image.png

Link to postu

Witam, 

Z samą bazą danych jest w porzadku, narzedzia mssql nie pokazując żadnych problemów. Chodzi tu raczej o integralność danych na poziomie subiekta a nie bazy. Czy została reindeksacja? - nie. Pytanie czy to reindeksacja na bazie nie rozwali Insertowskiego "Instynktu"?  

Edytowane przez Tomasz Lapke
Link to postu

Czyli sugerujcie Panowie reindeksacje wszystkich tabel i ich indeksow czy tylko konkretnych? Jestem przekonany, że jakiś czas temu już to próbowałem robić. Czy są jakieś narzędzia dostarczone do subiekta którymi można byłby sprawdzić konsystencje samych danych?

Link to postu

Witam, 

 

Rzeczywiście reindeksacja pomogła. Gdyby ktoś miał podobne problemy to poniżej sql do wykonania na bazie (wszystkie usługi i klienci powinni być odpięci od bazy przed puszczeniem, dodatkowo myślę, że backup nie zaszkodzi, sql zwraca output jeżeli coś się schrzani):

declare @tableName nvarchar(255)

declare myCursor CURSOR FOR
select TABLE_SCHEMA+'.'+TABLE_NAME
from INFORMATION_SCHEMA.TABLES
where TABLE_TYPE = 'base table'
open myCursor
Fetch next from myCursor into @tableName
While @@FETCH_STATUS = 0
Begin
print 'Working on: '+@tableName
DBCC DBREINDEX(@TableName,' ',90)
Fetch next from myCursor into @tableName
end
close myCursor
Deallocate myCursor

Myślę, że będę musiał zrobić jakieś joba który reindeksacje będzie wykonywać cyklicznie... 

 

Link to postu

Tak tylko dodam że nie trzeba wymyślać skryptów bo programem serwisowym nexo można to zrobić dwoma kliknięciami, a przy tym jeszcze zrobiona będzie odbudowa statystyk, co jest równie ważne.
Nazywa się to "konserwacja bazy danych".

Nie da się tego polecenia odpalić w harmonogramie, ale poza tym jest i nic nie trzeba wymyślać.

Link to postu

Witam, 

 

Rzeczywiście reindeksacja pomogła. Gdyby ktoś miał podobne problemy to poniżej sql do wykonania na bazie (wszystkie usługi i klienci powinni być odpięci od bazy przed puszczeniem, dodatkowo myślę, że backup nie zaszkodzi, sql zwraca output jeżeli coś się schrzani):

declare @tableName nvarchar(255)

declare myCursor CURSOR FOR
select TABLE_SCHEMA+'.'+TABLE_NAME
from INFORMATION_SCHEMA.TABLES
where TABLE_TYPE = 'base table'
open myCursor
Fetch next from myCursor into @tableName
While @@FETCH_STATUS = 0
Begin
print 'Working on: '+@tableName
DBCC DBREINDEX(@TableName,' ',90)
Fetch next from myCursor into @tableName
end
close myCursor
Deallocate myCursor

Myślę, że będę musiał zrobić jakieś joba który reindeksacje będzie wykonywać cyklicznie... 

 

Link to postu
×
×
  • Dodaj nową pozycję...