Проблема с вставкой данных в поле varchar с использованием хранимой процедуры

StackOverflow https://stackoverflow.com/questions/801978

  •  03-07-2019
  •  | 
  •  

Вопрос

Я загружаю некоторые данные из DB2 в SQL2005.Таблица содержит одно текстовое поле длиной 2000 символов в DB2, но настроенное как varchar(2000) в SQL.

Когда я запускаю свою вставку в браузере запросов, она обрабатывается нормально, и данные копируются правильно, однако, когда тот же оператор выполняется в моей хранимой процедуре, данные только для этого поля копируются неправильно и отображаются в виде ряда странных символов.

Иногда поле может содержать управляющие символы, однако проблема возникает даже тогда, когда этого не происходит.

Есть ли настройка, которую мне нужно применить к моей хранимой процедуре, чтобы заставить insert работать правильно?

Или мне нужно использовать приведение или преобразование данных, чтобы они отображались правильно?

Спасибо.

Обновить:Спасибо за ваши предложения.Теперь выясняется, что проблема была вызвана программным обеспечением, которое мы использовали для создания связанного сервера, содержащего базу данных DB2.Это не могло обрабатывать поле длиной в 2000 символов при запуске через хранимую процедуру, но могло при интерактивном запуске.

В конечном итоге я решил проблему, объединив поле в поля длиной 10 200 символов для загрузки, а затем повторно объединил их снова, когда они были в базе данных SQL.

Это было полезно?

Решение 3

Эта проблема была вызвана сторонним программным обеспечением, которое мы использовали для создания связанного сервера с базой данных DB2.Это не могло обрабатывать поле длиной в 2000 символов при запуске через хранимую процедуру, но могло при интерактивном запуске.

В конечном итоге я решил проблему, объединив поле в поля длиной 10 200 символов для загрузки, а затем повторно объединил их снова, когда они были в базе данных SQL.

Другие советы

Похоже, что данные, поступающие из db2, имеют другой набор символов.Вы должны убедиться, что это не EBCDIC или что-то в этом роде.

Кроме того, попробуйте вызвать свою хранимую процедуру из среды SQL Server Management Studio (браузер запросов), чтобы посмотреть, работает ли она вообще.

Возможно, вы захотите изменить свой varchar(2000) на nvarchars(2000) (как в хранимой процедуре, так и в таблице - я предполагаю, что он существует как параметр).Это позволило бы им содержать два байтовых символа.Это будет зависеть от конфигурации DB2, но может случиться так, что она экспортирует UTF-16 (или аналогичный), а не UTF-8.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top