Сопоставление столбцов SQL Server 2008

#sql #sql-server-2008 #collation

#sql #sql-server-2008 #сопоставление

Вопрос:

Я вставляю данные в таблицы с использованием динамического SQL:

 SET @Profiles = N'SELECT '''   @var1   ''' as col1, col2, col3, col4, col5, col6, col7
        FROM '   @TableName   'tbl1'

INSERT INTO
table (col1, col2, col3, col4, col5, col6, col7)
EXEC (@Profiles)
  

Приведенный выше запрос находится в хранимой процедуре, которая выполняется заданием.

Я заметил, что при выполнении задания данные с японскими символами вставляются правильно, но когда задание завершено, и я выбираю вставленную таблицу, она возвращает «?» вместо японских символов. Я использую сопоставление SQL_Latin1_General_CP1_CI_AS , и мой тип данных столбца nvarchar равен . Я также пытался изменить сопоставление, но даже при сопоставлении на японском языке оно возвращает ‘?’. Вы знаете, как я могу с этим справиться?

РЕДАКТИРОВАТЬ 1 Я забыл добавить, что хранимая процедура находится в пакете SSIS. Может быть, это может помочь.

Комментарии:

1. Имеете ли вы дело с NVARCHAR типами данных на каждом этапе? Например, вы используете VARCHAR переменную или выбираете данные из VARCHAR столбцов перед их вставкой?

2. Типы данных исходного и целевого столбцов и их размеры одинаковы. Также, когда я запускаю хранимую процедуру вручную, все в порядке. Проблема возникает, когда я запускаю хранимую процедуру из задания.

Ответ №1:

Я нашел, что было не так. На последнем шаге пакета SSIS у меня есть функция, которая удаляет непечатаемые белые символы, и этот параметр функции был varchar вместо nvarchar. Я изменил его на nvarchar, и теперь все в порядке.