Тип источника 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" в контексте типа данных, и как я могу импортировать эти данные в новую таблицу на другом сервере?
Я ценю любую помощь.
Ответы
Ответ 1
С небольшим количеством экспериментов эта ошибка возникает только тогда, когда у вас есть запрос в качестве источника. Принятый ответ не работал у меня, так как копирование в плоский файл приведет к той же ошибке.
Чтобы решить эту проблему, я поставил свой запрос в View
, а затем Copy From one or more Tables Or Views
вместо Write a query...
.
Я прошел через мастера, как правило, после этого, и мои данные прошли без ошибок
Ответ 2
К сожалению, это ошибка. См. Ниже ссылки (и проголосуйте):
- > Мастер импорта и экспорта SQL Server не распознает Varchar и NVarchar
и
- > DTSWizard в SQL 2012 SP1 больше не распознает типы данных nvarchar/varchar, когда источником является запрос
Ответ 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 (##). Поля, возможно, нуждаются в обрезке перед использованием, но импорт работает.
Ответ 6
Это ошибка и была исправлена только в SQL SERVER 2012 SP2.
Ответ 7
Вам действительно не нужно заниматься какой-либо настройкой, просмотром или любым другим. Просто сохраните пакет SSIS и выполните его, дважды щелкнув его в проводнике. Это запустит утилиту "Execute Package Utility" (DTExecUI.exe в папке ManagementStudio), которая должна запускать пакет без ошибок.
Ответ 8
Самое быстрое решение - экспортировать данные в новую таблицу в той же базе данных (источник), используя мастер импорта/экспорта. Затем экспортируйте данные из новой таблицы.
Как-то мастер импорта/экспорта работает с магией (на самом деле) в то время, когда он создает новую таблицу.
Спасибо Jyoti за прекращение боли, которую должен был использовать мастер импорта/экспорта.
Ответ 9
Я просто использовал команду convert, чтобы заменить varchar на символ в выражении select. Кажется, работает на меня. Я сделал это в разделе запросов на запись мастера импорта. Надеюсь это поможет.
Мистер М