Если у Вас поле имеет тип именно varchar(), т.е. это не unicode, то корректно прочитать данные из этого поля можно только и исключительно в том случае, если текущая кодовая страница "читающей" стороны совпадает с той кодовой страницей в которой происходила запись в это поле
Т.е., например, если у Вас при записи была кодовая страница 866, то и читать Вы должны при текущей кодовой странице 866 и никак иначе. В противном случае, вопросики и получите
Перекодировка прочитанного значения смысла уже не имеет. Вы должны перекодировать в момент чтения, а не "после". У Вас уже результат чтения не корректный. Вам надо или с собственно запросами экспериментировать или какие-то настройки среды чтения делать. Возможны еще настройки подключения, но это обычно у ODBC есть автотранслейт.
На форуме
https://www.sql.ru/forum/microsoft-sql-server поищите рекомендации. Там полно подобных вопросов типа: запускаю отсюда - нормально, а запускаю отсюда - вопросики
-----------------
Решение "в лоб", если лень искать настройки, это примерно такой запрос
X++:
SELECT ColumnName collate Cyrillic_General_CI_AS
FROM dbo.TABLENAME
Явное указание в какой кодировке читать значение поля таблицы. Это, разумеется, не очень удобно, но можно проверить саму идею