Ausgangslage
Bei der massenhaften Artikelanlage (per Ameise oder FFN) passiert es regelmäßig, dass die Artikel anschließend im JTL nicht über die JtlFnSku gefunden werden können. Sobald ich den Artikel geöffnet und gespeichert habe, ist das Problem behoben. In anderen bekannten Fällen ist davon die EAN beim Ameisenimport betroffen. Das betrifft dann die Wawi, den Packtisch und das WMS gleichzeitig.
Ursache
Die Artikelsuche bezieht sich immer und grundsätzlich auf eine Index-Tabelle "dbo.tArtikelSpeicher", welche unter uns unbekannten Umständen sich nicht ordnungsgemäß füllt. Auch kann es passieren, dass in bestimmten JTL Versionen beim massenhaften Hinzubuchen von WMS-Beständen diese Tabelle geleert wird. Da aber jede Artikelsuche immer in dieser Tabelle durchgeführt wird, kann man den Artikel dann gar nicht mehr finden.
Lösung - Mit SQL Standard
Wenn man eine SQL Standard-Lizenz sein Eigen nennt, kann man über den Agent einen Hintergrund-Dienst einfügen, der die obere Tabelle repariert. Da JTL das Problem seit vielen Jahren bekannt ist, haben sie auch selbst eine gespeicherte Prozedur angelegt, welche dieses Problem löst.
Diese Prozedur kann man über den Agent jede Nacht ausführen:
USE [msdb]
GO
/****** Object: Job [spUpdateArtikelSpeicher] Script Date: 27.01.2023 12:07:31 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [Data Collector] Script Date: 27.01.2023 12:07:31 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Data Collector' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Data Collector'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'spUpdateArtikelSpeicher',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'EXECUTE [eazybusiness].[dbo].[spUpdateArtikelSpeicher]',
@category_name=N'Data Collector',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [spUpdateArtikelSpeicher] Script Date: 27.01.2023 12:07:31 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'spUpdateArtikelSpeicher',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'EXECUTE [dbo].[spUpdateArtikelSpeicher] ',
@database_name=N'eazybusiness',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'taglich spUpdateArtikelSpeicher',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20230127,
@active_end_date=99991231,
@active_start_time=500,
@active_end_time=235959,
@schedule_uid=N'18902798-ea57-455d-8a0f-3d40a361cb54'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
Hinweis zur SQL Express:
Wenn man den Agent nicht hat, muss man, sobald das Problem auftaucht, in das Management Studio gehen und die Korrektur manuell ausführen:
USE eazybusiness;
EXECUTE [dbo].[spUpdateArtikelSpeicher];
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.