Тип источника 200 в Мастер импорта и экспорта SQL Server? - программирование
Подтвердить что ты не робот

Тип источника 200 в Мастер импорта и экспорта SQL Server?

Я пытаюсь импортировать данные из одной базы данных на сервере в новую таблицу на другом сервере, используя мастер импорта и экспорта SQL Server. (SQL Server Management Studio 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" в контексте типа данных, и как я могу импортировать эти данные в новую таблицу на другом сервере?

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

4b9b3361

Ответ 1

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

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

Я прошел через мастера, как правило, после этого, и мои данные прошли без ошибок

Ответ 3

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

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

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

Ответ 4

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

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

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

Вот где я получил ответ, довольно далеко от страницы: 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 и любые другие так же!

Ответ 5

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

Ответ 7

Вам действительно не нужно заниматься какой-либо настройкой, просмотром или любым другим. Просто сохраните пакет SSIS и выполните его, дважды щелкнув его в проводнике. Это запустит утилиту "Execute Package Utility" (DTExecUI.exe в папке ManagementStudio), которая должна запускать пакет без ошибок.

Ответ 8

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

Ответ 9

Я просто использовал команду convert, чтобы заменить varchar на символ в выражении select. Кажется, работает на меня. Я сделал это в разделе запросов на запись мастера импорта. Надеюсь это поможет.

Мистер М