Исходный тип 200 в мастере импорта и экспорта SQL Server?

Я пытаюсь импортировать данные из одной базы данных на сервере в новую таблицу на другом сервере, используя мастер импорта и экспорта SQL Server. (Студия управления SQL Server 2012)

В мастере я установил флажок «Написать запрос, чтобы указать данные для передачи», и оператор SQL возвращает данные, содержащие следующие четыре столбца:

+-----------------------------------------------------------------------------+
| ID(varchar(100))  |  Title(text)  |  Description(text)  |  IsActive(tinyint)|
+-----------------------------------------------------------------------------+

Я хочу изменить типы для новой таблицы на

+----------------------------------------------------------------------------------------+
| ID(varchar(4))  |  Title(varchar(200))  |  Description(varchar(2000))  |  IsActive(bit)|
+----------------------------------------------------------------------------------------+

Итак, на странице "Сопоставления столбцов" (на странице "Выбор исходных таблиц и представлений" я нажал "Редактировать сопоставления...") я изменил место назначения Тип к вышеуказанным типам. Затем, после нажатия «Далее» на странице «Просмотр сопоставления типов данных», я получаю сообщение об ошибке «Found 3 unknown column type conversion(s). You are only allowed to save the package».

Сопоставление типа данных показывает следующую информацию:

icon    Source Column    Source Type    Destination Column    Destination Type    Convert
----------------------------------------------------------------------------------
error   ID               200            ID                    varchar
error   Title            200            Title                 varchar
error   Description      201            Description           varchar
warning IsActive         tinyint        IsActive              bit    

Даже если я не изменю тип данных на странице «Редактировать сопоставления...», я получаю ту же ошибку.

Я не понимаю, что означает «200» в контексте типа данных и как я могу импортировать эти данные в новую таблицу на другом сервере?

Я ценю любую помощь.


person kabichan    schedule 12.02.2013    source источник


Ответы (8)


Немного поэкспериментировав, эта ошибка появляется только тогда, когда у вас есть запрос в качестве источника. Принятый ответ не сработал для меня, так как копирование в плоский файл приведет к той же ошибке.

Чтобы решить эту проблему, я поместил свой запрос в View, затем выбрал Copy From one or more Tables Or Views вместо Write a query....

После этого я прошел через мастер нормально, и мои данные прошли без ошибок.

person James Sampica    schedule 27.09.2013
comment
это абсолютно правильный способ обойти эту уродливую ошибку Microsoft, отнимающую много времени. вы заслуживаете пива сэр - person Batu; 04.01.2016
comment
Великолепно! была эта проблема, пытаясь переместить некоторые данные, которые имели тип данных текста... работал как шарм! спасибо @ботинок - person Eli; 09.06.2016

К сожалению, это ОШИБКА. Смотрите (и голосуйте) ссылки ниже:

--> Мастер импорта и экспорта SQL Server не распознает Varchar и NVarchar

а также

--> DTSWizard в SQL 2012 SP1 больше не распознает типы данных nvarchar/varchar, когда источником является запрос

person Andrey Morozov    schedule 16.05.2013
comment
Он работает с SQL Server 2008 R2 Management Studio. Они представили его с SQL Server 2012... и до сих пор проблема. Что-то вроде большой ошибки... не могу поверить, что они еще не устранили ее! - person sam yi; 24.09.2014

Могу поспорить, что текстовые столбцы нельзя вставить в столбцы varchar с помощью мастера. В зависимости от размера таблицы вы можете экспортировать исходный код в csv через SSMS, а затем импортировать его. Это должно работать, но если у вас есть несколько таблиц для импорта, вы можете добавить связанный сервер. Затем вы можете просто квалифицировать старую таблицу или новую таблицу следующим образом:

insert into [new_server].database.dbo.tablename
select * from old_table

Я знаю, что SQL2000 - это боль для создания связанных серверов, хотя я предполагаю, что вы пытаетесь экспортировать, поскольку у вас есть текстовые столбцы.

person darin    schedule 12.02.2013
comment
Спасибо. Мне было интересно, просто невозможно ли импортировать с помощью мастера или есть способ заставить мастер работать, но это решение работает так же просто, как и мастер :) - person kabichan; 12.02.2013
comment
Так же, как FYI для всех, кто сталкивается с этим, убедитесь, что вы включили Identity Insert, если вам нужно сохранить тот же PK в импортированной таблице. SET IDENTITY_INSERT DestinationTableName ON. После того, как ваш запрос структурирован, как указано выше, отключите его. SET IDENTITY_INSERT DestinationTableName OFF - person Tommy; 26.01.2014

Долгосрочное решение (помимо исправления Microsoft) (или уже есть?) также находится в нескольких ссылках от опубликованных ответов.

На затронутом компьютере есть XML-файл, определяющий сопоставление кода со значением для каждого типа преобразования.
То, что видно из "200" и "201", вызывающих сбой, является отсутствующим сопоставлением
.... ну, это не должно было пройти как "200/201", но, поскольку это произошло, мы хотели бы, чтобы это было нанесено на карту

Его можно вставить вручную, если вы готовы поиграться с такими конфигурациями.

Вот где я получил ответ, довольно далеко вниз по странице: 2012-sp1-no-longer-recognizes-common-data-types?forum=sqlintegrationservices">http://social.msdn.microsoft.com/Forums/sqlserver/en-US/97ff1f01-c02a-4c9a-b867-8eaecc464cfb /2012-sp1-no-longer-recognizes-common-data-types?forum=sqlintegrationservices

Файлы сопоставления находятся в папке C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\
(или эквивалентной)

Существует по одному для каждого типа преобразования источника в место назначения.

Для переключения между серверами SQL используйте такие файлы, как
MSSQLToSSIS10.XML
MSSql9ToMSSql8.xml
MSSql10ToMSSql9.xml.

Где вы видите

<!-- varchar -->
<dtm:DataTypeMapping >
    <dtm:SourceDataType>
        <dtm:DataTypeName>varchar</dtm:DataTypeName>
    </dtm:SourceDataType>
    <dtm:DestinationDataType>
        <dtm:CharacterStringType>
            <dtm:DataTypeName>DT_STR</dtm:DataTypeName>
            <dtm:UseSourceLength/>
        </dtm:CharacterStringType>
    </dtm:DestinationDataType>
</dtm:DataTypeMapping>

Добавьте сопоставление «200», чтобы оно соответствовало тому, что вы в итоге получили

<!-- varchar -->
<dtm:DataTypeMapping >
    <dtm:SourceDataType>
        <dtm:DataTypeName>varchar</dtm:DataTypeName>
    </dtm:SourceDataType>
    <dtm:DestinationDataType>
        <dtm:CharacterStringType>
            <dtm:DataTypeName>DT_STR</dtm:DataTypeName>
            <dtm:UseSourceLength/>
        </dtm:CharacterStringType>
    </dtm:DestinationDataType>
</dtm:DataTypeMapping>
<dtm:DataTypeMapping >
    <dtm:SourceDataType>
        <dtm:DataTypeName>200</dtm:DataTypeName>
    </dtm:SourceDataType>
    <dtm:DestinationDataType>
        <dtm:CharacterStringType>
            <dtm:DataTypeName>DT_STR</dtm:DataTypeName>
            <dtm:UseSourceLength/>
        </dtm:CharacterStringType>
    </dtm:DestinationDataType>
</dtm:DataTypeMapping>  

Точно так же исправьте nvarchar и любые другие!

person Mike M    schedule 06.03.2014

Я смог обойти это, приведя символьные поля к типу char(##) в SQL, а затем изменив типы данных назначения на varchar(##). Поля могут нуждаться в обрезке перед использованием, но импорт работает.

person Jeff    schedule 18.03.2014

Это ошибка и была исправлена ​​в SQL SERVER 2012 SP2.

person zs2020    schedule 15.07.2014

Вам действительно не нужно возиться с конфигурацией, представлениями или чем-то еще. Просто сохраните пакет SSIS и запустите его, дважды щелкнув его в проводнике. Это запустит «Утилита выполнения пакетов» (DTExecUI.exe в папке ManagementStudio), которая должна запустить пакет без ошибок.

person colivier    schedule 18.06.2014

Самое быстрое решение — экспортировать данные в новую таблицу в той же базе данных (источнике) с помощью мастера импорта/экспорта. Затем экспортируйте данные из новой таблицы. Каким-то образом мастер импорта/экспорта творит чудеса (не совсем) во время создания новой таблицы. Спасибо, Джоти, за то, что избавили от мучений, связанных с использованием мастера импорта/экспорта.

person Sal Young    schedule 26.03.2014