SQL Server Management Studio: тихий импорт, игнорирование 99,9% данных - PullRequest
15 голосов
/ 10 сентября 2010

Проблема

Я пытаюсь импортировать данные в таблицу с помощью задачи Import Data в SQL Server Management Studio. Это только приносит 26 строк, из оригинальных 49,325. ( Редактировать : отсюда 99,9%: (1-26/49325)*100 = 99.9%

При правильном использовании DTS в Enterprise Manager отображаются все 49 325 строк.

Почему SSMS не импортирует все строки, сообщая об успешном переносе 49,325 и не обнаружив ошибок? Почему Enterprise Manager способен правильно импортировать все 49 325 строк?

Microsoft SQL Server Management Studio версия: 10.0.1600.22 (начиная с SQL Server 2008, установленного сегодня на новой машине с Windows 7, применен пакет обновления 1)

Proof - Импорт с использованием SSMS

Таблица STRTransactions изначально пуста:

enter image description here

Источником является база данных ContosoFrobManager в lithium:

enter image description here

Назначением является база данных Grob в lithium;

enter image description here

я хочу скопировать данные из одной (или нескольких) таблиц:

alt text

я хочу скопировать таблицу STRTransactions: alt text

Вы можете добавить к существующей таблице, это нормально (она пуста). Я хочу, чтобы включить вставки личности. И не пытайтесь импортировать метку времени (поскольку вы все равно будете жаловаться): alt text

Беги немедленно, это нормально: alt text

Да, вы собираетесь делать вещи: alt text

мне удалось поймать его, когда он переносил 49 325 строк, около отметки 1k: alt text

Все сделано. Все 49,325 строк успешно скопированы: alt text

А вот и отчет:

Выполнение было успешным

  • Инициализация задачи потока данных (успех)

  • Инициализация соединений (успех)

  • Установка команды SQL (успех)

  • Настройка соединения с источником (Успех)

  • Настройка целевого соединения (успех)

  • Проверка (Успешность) Сообщения Предупреждение 0x80049304: Поток данных Задача 1: Предупреждение: не удалось открыть глобальный общий доступ память для общения с производительностью DLL; счетчики производительности потока данных не доступны Чтобы решить, запустите этот пакет как администратор, или на консоли системы. (SQL Server Мастер импорта и экспорта) Предупреждение 0x80047076: Поток данных Задача 1: выходной столбец "отметка времени" (158) в выведите «OLE DB Source Output» (11) и компонент "Источник - STRTransactions" (1) впоследствии не используется в Задача потока данных. Удаление этого неиспользованного выходной столбец может увеличить поток данных выполнение задач. (Импорт SQL Server и мастер экспорта)

  • Подготовка к выполнению (успех)

  • Предварительно выполнить (Успех)

  • Выполнение (Успех)

  • Копирование в [dbo]. [STRTransactions] (Успех) 49325 перенесенных строк

Сообщения Информация 0x402090df: Данные Задача потока 1: окончательный коммит для вставка данных в компонент "Пункт назначения - STRTransactions" (163) " началось. (SQL Server Импорт и Мастер экспорта) Информация 0x402090e0: Поток данных Задача 1: окончательная фиксация для вставки данных в «компоненте» Пункт назначения - STR Транзакции "(163)" закончились. (Мастер импорта и экспорта SQL Server)

  • Информация о сообщениях после выполнения (успеха) 0x4004300b: Задача потока данных 1: «компонентный» пункт назначения - STRTransaction "(163)" написал 49325 строк. (SQL Server Импорт и экспорт Волшебник)

Отлично. Все сделано. " написал 49325 строк ".

За исключением того, что он написал только 26 строк:

enter image description here

Очевидно, я не сумасшедший. я все сделал правильно И даже если бы я не сделал, SSMS не дает никаких признаков каких-либо проблем. я повторил эти шаги 8 раз:

  • 5 раз для себя
  • дважды, чтобы продемонстрировать двум разным коллегам
  • один раз, чтобы сделать скриншот процесса для этого SO вопроса

Каждый раз, когда ровно 26 строк, не больше, не меньше.Но что было уничтожено, мастер или подмастерье?

Но просто чтобы доказать, что я не делаю ничего плохого, мы попробуем снова с Enterprise Manager .Отличный инструмент, написанный более десяти лет назад:

Доказательство - импорт с использованием Enterprise Manager

Я удалил 26 строк из таблицы STRTransactions.я мог бы предоставить скриншот, который я начинаю с пустой таблицы;или ты можешь просто поверить мне в этом.А поскольку мастера почти идентичны, вы увидите почти идентичные скриншоты.Извини за это;но никто не поверит мне без доказательств.

Я хочу экспортировать из базы данных ContosoFrobManager в lithium:

enter image description here

я хочу импортировать в базу данных Grob на lithium:

enter image description here

я хочу скопировать таблицы:

alt text

Я хочу скопировать таблицу транзакций STR:

enter image description here

Вы можете продолжить и добавить строки в существующую таблицу (этопусто в любом случае).Я хочу, чтобы вы вставили значения идентичности.И не пытайтесь вставить timestamp значения, вы все равно выдадите ошибку:

enter image description here

Запустите сейчас, конечно:

alt text

Да, вы собираетесь делать вещи:

enter image description here

мне удалось поймать его всередина импорта, около 12 тыс. строк:

enter image description here

Все готово, 49 325 строк успешно скопированы:

enter image description here

И мы выбираем из таблицы, чтобы увидеть строки:

enter image description here


Почему SSMS, инструменткоторый активно развивался в течение 6 лет, но до сих пор не получил права?В то время как Enterprise Manager был почти без ошибок первоначальной командой разработчиков?Это еще один пример критических ошибок в SSMS.Последняя критическая ошибка, которую я обнаружил , заключалась в том, что она не обрабатывает все объекты .

Можем ли мы попросить команду разработчиков Enterprise Manager переписать SSMS?


Можно с уверенностью сказать, что я вижу только ответы:

  • использовать другой инструмент
  • вы сообщали об этом в Microsoft Connect?
  • вызов PSS

Конечно, у меня есть обходной путь, прекратите использовать SQL Server Management Studio.Но мне уже приходится запускать Enterprise Manager в 32-битной совместимости в режиме XP (как вы можете видеть по окнам Luna на моем рабочем столе с Aero)

Me: я заставил его работать1245 * Как?Me: Я использовал Enterprise Manager Colleague: scoff Хорошо.Colleague: Тогда мне, возможно, придется установить это.

Редактировать: Читая мой старый вопрос о ServerFault, о том, что SSMS молча не создает сценарии для некоторых таблиц в базе данных, у меня был в конце,« Уважаем, если вы ненавидите SSMS ».Итак:

Привет, если вы ненавидите SSMS.

Игра

Я создал билет в Microsoft Connect .Делайте ваши ставки, когда эта проблема будет Closed as not reproducible.Отредактируйте этот вопрос, добавив ваше имя и дату.Один из ближайших, не переходя, выиграет 100 повторений!(я пожертвую свою репутацию) Если у вас недостаточно представителя для редактирования вопросов, оставьте свое предположение в комментарии, и я добавлю его.

Гадания

  • Ян Бойд: 5 января 2011 года

Обновление: Закрыто 18.03.2011.Отключено на 43 дня.

Ответы [ 5 ]

6 голосов
/ 11 сентября 2010

Ответ:

  1. Возьми пистолет.
  2. Разыщи виновных и ...
  3. Шучу.Но кто-то должен встать и взять ответственность за свой мусор, не так ли?Мы бы на самом деле не стреляли в них, но разве нам не хотелось бы иногда встречаться лицом к лицу с человеком или командой и требовать, чтобы они ответили, почему они сделали такую ​​плохую работу?!?!

Я согласен, что в последних продуктах Microsoft есть какой-то хлам.В SSRS, когда вы щелкаете по текстовому полю в середине существующего текста и нажимаете вставку, после операции вставки курсор находится в конце всего текста, а не в конце вставленного текста (в середине).SSRS и SSIS просто изобилуют всякой ерундой, подобной этой.

2 голосов
/ 11 сентября 2010

Есть только два способа заставить SSIS правильно что-либо делать.
Первый - перенести данные в совершенно новую таблицу.
Второй - импортировать их в MS Access.затем импортируйте его оттуда на сервер sql.

Откровенно говоря, я был недоволен, так как они избавились от DTS.По крайней мере DTS работал согласованно.

См. моя ошибка Microsoft Connect на этом .

https://connect.microsoft.com/SQLServer/feedback/details/386948/simple-ssis-import-from-excel-2007-consistently-fails-with-useless-error-messages

Они утверждают, что проблемы будут решены вследующая версия Sql Server.Откровенно говоря, если они не уволили всю команду, ответственную за эту функцию, я им не верю.

2 голосов
/ 11 сентября 2010

У меня было несколько таких проблем. Этот волшебник абсолютно не надежен. Если это одноразовая задача, я экспортирую в csv, а затем импортирую из csv. Если вам нужно регулярно его запускать, напишите свой собственный код. Недавно мы провели аналогичное обсуждение: должны ли программисты использовать SSIS, и если да, то почему?

1 голос
/ 14 декабря 2011

У меня была похожая проблема, только 291 строка была перенесена из 540K строк, но мастер импорта успешно работал (я переходил с SQL Server 2008 на 2005).

Решение: я изменил источник данных:

  • с: Собственный клиент SQL Server 10.0
  • на: Поставщик Microsoft OLE DB для SQL Server

как на источнике, так и на месте назначения (в мастере импорта), а затем он работал.

В качестве отступления:Если я правильно понимаю ваши снимки экрана, вы также использовали Собственный клиент SQL Server 10.0 в мастере импорта служб SSIS, когда он не удался, но вы использовали Поставщик Microsoft OLE DB для SQL Server , когдаиспользуя Enterprise Manager, когда он работал.

В прошлом у меня не было проблем с использованием собственного клиента SQL Server, поэтому я подозреваю, что в моем случае потребовалось перейти на поставщика Microsoft OLE DB для SQL Server из-за копирования данных из SQL Server 2008 в 2005.

Вы отлично поработали над снимками экрана, и ваш вопрос действительно помог мне - так что спасибо :)

1 голос
/ 22 декабря 2010

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

Цитируется по ссылке: «« Включить вставку идентификаторов »также игнорируется при определенных обстоятельствах»

"Мастер экспорта" пропускает "записи, которые должны быть экспортированы"

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

http://connect.microsoft.com/SQLServer/feedback/details/135905/mappings-settings-not-working-in-export-data-wizard

Очень странно и раздражает.Являются ли эти крайние случаи - просто потому, что сама SSIS используется в тихих больших проектах / БД, и я никогда не сталкивался с этим раньше.

...