It looks like this table was defined with [dynamic data masking][1], and the user that the application uses to access the database doesn't have permission to view masked data (which is good!). This is why the behavior differs between the application and SSMS: I expect you're using a higher-privileged user when running the query from SSMS Here's a demo: ``` CREATE TABLE dbo.Test ( Id int IDENTITY PRIMARY KEY, Filler varchar(100) MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') NULL ); GO CREATE USER TestUser WITHOUT LOGIN; GRANT SELECT ON dbo.Test TO TestUser; GRANT INSERT ON dbo.Test TO TestUser; GO EXECUTE AS USER = 'TestUser'; INSERT dbo.Test (Filler) VALUES (REPLICATE(N'A', 101)); REVERT; ``` The result of which is: ```lang-none Msg 2628, Level 16, State 1, Line 12 String or binary data would be truncated in table '******', column '******'. Truncated value: '******'. ``` [1]: https://learn.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking?view=sql-server-ver15