I try to insert binary string into VARBINARY field in MSSQL table.
If my string have symbols 0-10 TDS recognizes that that is a binary and insertion works.
Otherwise it fails.
This one works:
iex(2)> TdsTest.TestRepo.insert(%TdsTest.Rawdata{ID: UUID.uuid4(), FVarBin: <<1,2,3,4,5>>})
11:24:02.963 [debug] QUERY OK source=“Rawdata” db=10.5ms queue=2.0ms idle=228.8ms
INSERT INTO [dbo].[Rawdata] ([ID],[FVarBin]) VALUES (@1, @2) [“759b8945-d13b-4190-845f-91f343735bc2”, <<1, 2, 3, 4, 5>>]
But that won’t:
iex(3)> TdsTest.TestRepo.insert(%TdsTest.Rawdata{ID: UUID.uuid4(), FVarBin: <<32,33,34,35>>})
11:24:15.535 [debug] QUERY ERROR source=“Rawdata” db=0.0ms queue=1.4ms idle=812.4ms
INSERT INTO [dbo].[Rawdata] ([ID],[FVarBin]) VALUES (@1, @2) [“7fd4d3de-b0c9-4a79-b3f1-6f9c31e1c8f4”, " !"#"]
That’s coming from database: “** (Tds.Error) Line 1 (Error 257): Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.”
FVarBin is VARBINARY(MAX), but that won’t work also with any VARBINARY(N) type.
What should I do to make that working?
I posted test project on github TDS VARBINARY test