Aplikace často hlásí chybu - časový limit provedení vypršel

 
ZPĚT
ver: 2022-11-21

V detailu chybového hlášení "Kopírovat údaje o chybě do schránky" naleznete hlášku. "Časový limit provedení vypršel" , "Časový limit uplynul před dokončením operace" , "Server neodpovídá" nebo "The timeout period elapsed"



Je několik věcí na co je třeba brát ohled a najít si optimální řešení.
 

  • Je možné, že se pokoušíte zobrazit nebo vyhodnotit příliš velké množství dat. Což samozřejmě znamená, že SQL server bude potřebovat úměrný čas k provedení. Zkuste omezit limit zobrazovaných dat.
  • Server nemá výkon, doporučujeme aby velikost RAM byla 1:1 s velikostí databáze „*data*“. SQL server tím může velkou část databáze odložit do RAM a tím vše zrychlit.
  • Server má instalován MSSQL Express, který má limit 1G RAM a bude nutné provést upgrade na plnou verzi SQL.
  • V aplikaci Palstat lze v konfiguraci nastavit prodloužení času na timeout. Aplikaci tím řeknete aby déle čekala na odpověï SQL serveru. Je to ale vytloukání klínu klínem a prodloužení času může být časem na tak velké hodnotě, že aplikace bude čekat dlouhé minuty na některé operace což dost sníží uživatelský konfort a aplikace se v takové chvíli bude jevit jako zaseknutá.
  • Restruktualizace indexů databáze, provádějte kdykoliv řešíte problém s rychlostí systému. Ukázkový SQL příkaz níže, který spustíte nad hlavní databází *data*.

 

Nastavení provedete v souboru ./CONFIG/config.xml


 
<?xml version="1.0" encoding="utf-8" ?>

<palstat>
	<globalconfig>

	        <BlobCommandTimeout>60</BlobCommandTimeout>
	        <DefaultCommandTimeout>60</DefaultCommandTimeout>	
	
	</globalconfig>
	
</palstat>

Optimalizace indexů

DECLARE @TABLE NVARCHAR(80)
DECLARE @COMMAND NVARCHAR(MAX)
DECLARE @TOTAL INT
DECLARE @ACTUAL INT
SELECT TABLE_NAME INTO #TABLES FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_NAME
SET @TOTAL = (SELECT COUNT(*) FROM #TABLES)
SET @ACTUAL = 0
WHILE EXISTS (SELECT TOP 1 TABLE_NAME FROM #TABLES)
BEGIN
  SELECT TOP 1 @TABLE = TABLE_NAME FROM #TABLES ORDER BY TABLE_NAME
  SET @COMMAND = 'ALTER INDEX ALL ON [' + @TABLE + '] REBUILD;'
  SET @ACTUAL = @ACTUAL + 1
  PRINT 'WORKING ON ' + CAST(@ACTUAL AS NVARCHAR(5)) + ' FROM ' + CAST(@TOTAL AS NVARCHAR(5)) + ' : ' + @TABLE
  EXECUTE (@COMMAND)
  DELETE FROM #TABLES WHERE TABLE_NAME = @TABLE
END
DROP TABLE #TABLES

 

 

 

https://www.palstat.cz/ - Systém řízení kvality Ubytování ve Vrchlabí