Проблема вставки данных в поле varchar с помощью хранимой процедуры - PullRequest
0 голосов
/ 29 апреля 2009

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

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

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

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

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

Спасибо.

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

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

Ответы [ 3 ]

1 голос
/ 29 апреля 2009

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

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

0 голосов
/ 09 июля 2014

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

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

0 голосов
/ 29 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...