where 'Cape de l'Aube' is an invalid SQL statement (single quote shall be escaped with two single-quote characters, eg 'Cape de l''Aube').
the issue comes from the word processing made in the SQL procedure; the sentence was (initially) finely loaded into the Items table (using 'Cape de l''Aube') but when the item details are read (during the handling of the exchange) the loaded item's name is "Cape de l'Aube" (no double-single-quote), that name is tranmitted (with other parameters) to the SP usp_Insert_Action_Log_E (base PS_GameLog) and that script use it w/o any care (and doesn't re-escape the string).
change the SP to be:
Code:
USE [PS_GameLog]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[usp_Insert_Action_Log_E]
@UserID varchar(18),
@UserUID int,
@CharID int,
@CharName varchar(50),
@CharLevel tinyint,
@CharExp int,
@MapID smallint,
@PosX real,
@PosY real,
@PosZ real,
@StrActionTime varchar(20),
@ActionType tinyint,
@Value1 bigint = null,
@Value2 int = null,
@Value3 int = null,
@Value4 bigint = null,
@Value5 int = null,
@Value6 int = null,
@Value7 int = null,
@Value8 int = null,
@Value9 int = null,
@Value10 int = null,
@Text1 varchar(100) = '',
@Text2 varchar(100) = '',
@Text3 varchar(100) = '',
@Text4 varchar(100) = ''
AS
DECLARE @Sql nvarchar(4000) = ''
DECLARE @ActionTime datetime = convert(datetime, @StrActionTime, 120)
DECLARE @find char(1) = char(39)
DECLARE @repl char(2) = char(39) + char(39)
DECLARE @CharLeave int = 1
-- replace single-quote by two single-quotes in received strings
set @Text1 = replace(@Text1, @find, @repl)
set @Text2 = replace(@Text2, @find, @repl)
set @Text3 = replace(@Text3, @find, @repl)
set @Text4 = replace(@Text4, @find, @repl)
... etc ...
keep your anti-dupe actions, if any, and the final INSERT or EXEC statement.