Les caractères turcs ne sont pas affichés dans db lorsque j'utilise la requête SQL dynamic

J'ai un problème qui concerne les personnages de Turksih

J'utilise une requête SQL dynamic, quand j'ai vu la table Caractère turc est montré en anglais Charte etc. 's' est vu au lieu de ''. Lorsque je n'ai pas utilisé Dynamic Query, je n'ai aucun problème.

Mais je dois utiliser Dynamic Query. Ma question est:

declare @sql nvarchar(max) SET @Sql = concat('insert into ewrim.', QUOTENAME(@Tc), '(', QUOTENAME(@sutunadi1),',',QUOTENAME(@sutunadi2) ,', gun, ay, yil, saat, dakika, islem) ' ,'VALUES (' , @ilk_agirlik,',' , @son_agirlik ,',',convert(varchar(2),day(GETDATE())) ,',',convert(varchar(2),month(GETDATE())) ,',' , convert(varchar(4),year(GETDATE())) ,',' , convert(varchar(2),datepart(hh,GETDATE())) ,',' , convert(varchar(2),datepart(mi,GETDATE())) ,',' , char(39), @islem,char(39) ,')') EXECUTE sp_executesql @Sql 

Tout d'abord vous devriez afficher la requête sql:

 declare @sql nvarchar(max) SET @Sql = concat('insert into ewrim.',... SELECT @sql; 

Scénarios possibles:

1) Votre variable est définie comme VARCHAR() :

 DECLARE @s VARCHAR(10) = 'ş'; SELECT @s; -- s 

devrait être:

 DECLARE @s2 NVARCHAR(10) = N'ş'; SELECT @s2; -- ş 

Rextester Demo

2) Votre colonne dans la table ne permet pas de stocker des caractères spécifiques:

 DECLARE @s2 NVARCHAR(10) = N'ş'; DECLARE @t TABLE (col VARCHAR(10)); -- it depends on locale INSERT INTO @t(col) VALUES (@s2); SELECT * FROM @t; -- s 

Rextester Demo2