SQL Server Management Studio: импортировать тихое игнорирование 99,9% данных
Проблема
Я пытаюсь импортировать данные в таблицу с помощью задачи SQL Server Management Studio Import Data
. Он включает только 26 строк, из оригинала 49325. ( Изменить: то, где 99,9% происходит от: (1-26/49325)*100 = 99.9%
Использование DTS в Enterprise Manager правильно содержит все 49 335 строк.
Почему SSMS не импортирует все строки, сообщая, что он успешно передал 49,325, и не испытывал ошибок? Почему Enterprise Manager способен правильно импортировать все 49 335 строк?
Версия Microsoft SQL Server Management Studio: 10.0.1600.22 (из SQL Server 2008, установленной сегодня на новой машине Windows 7, применяется пакет обновления 1 (SP1))
Доказательство - импорт с использованием SSMS
Таблица STRTransactions
изначально пуста:
![введите описание изображения здесь]()
Источник - это база данных ContosoFrobManager
на lithium
:
![введите описание изображения здесь]()
Назначение - это база данных Grob
на lithium
;
![введите описание изображения здесь]()
Я хочу скопировать данные из одной (или более) таблиц:
![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: выходной столбец "timestamp" (158) on вывода "Выход источника OLE DB" (11) и компонент "Источник - STRTransactions" (1) впоследствии не используется в Задача потока данных. Удаление этого неиспользуемого выходной столбец может увеличить поток данных выполнение задач. (Импорт SQL Server и Мастер экспорта)
-
Подготовьтесь к выполнению (успеху)
-
Предварительно выполнить (Успех)
-
Выполнение (успешное выполнение)
-
Копирование на [dbo]. [STRTransactions] (Успех) 49325 перенесенных строк
Информация о сообщениях 0x402090df: Данные Поток Задача 1: Окончательная фиксация для вставка данных в компонент "Назначение - STRTransactions" (163) "начал. (Импорт и импорт SQL Server Мастер экспорта) 0x402090e0: поток данных Задача 1: окончательная фиксация для вставки данных в" компоненте "Назначение - STRTransactions" (163) "закончилось. (Мастер импорта и экспорта SQL Server)
- Сообщения после успешного выполнения (Success) 0x4004300b: задача потока данных 1:" компонент "Назначение - STRTransactions" (163)" написал 49325 строк. (Импорт и экспорт SQL Server Мастер)
Отлично. Все сделано. "написал 49325 строк".
За исключением того, что он написал только 26 строк:
![введите описание изображения здесь]()
Очевидно, я не сумасшедший. я сделал все правильно. И даже если я этого не сделал, SSMS не дает никаких указаний на какие-либо проблемы. Я повторил эти же шаги 8 раз:
- 5 раз для себя
- дважды, чтобы продемонстрировать двум различным коллегам.
- один раз, чтобы сделать снимок экрана для этого вопроса SO
Каждый раз, когда он ровно 26 строк, не больше, не меньше. Но что было разрушено, хозяин или аптека?
Но чтобы доказать, что я не делаю ничего плохого, мы попробуем еще раз с Enterprise Manager. Отличный инструмент, написанный более десяти лет назад:
Доказательство - импорт с использованием Enterprise Manager
Я удалил 26 строк из таблицы STRTransactions
. я мог бы предоставить скриншот, который я начинаю с пустой таблицы; или ты мог бы просто поверить мне в это. И поскольку волшебники почти идентичны, вы увидите почти одинаковые скриншоты. Извини за это; но никто не поверит мне без доказательств.
Я хочу экспортировать из базы данных ContosoFrobManager
на lithium
:
![введите описание изображения здесь]()
Я хочу импортировать в базу данных Grob
на lithium
:
![введите описание изображения здесь]()
Я хочу скопировать таблицы:
![alt text]()
Я хочу скопировать таблицу STR транзакций:
![введите описание изображения здесь]()
Вы можете продолжить и добавить строки в существующую таблицу (в любом случае она пуста). Я хочу, чтобы вы вставляли идентификационные значения. И не пытайтесь вставлять значения timestamp
, вы все равно будете выбросить ошибку:
![введите описание изображения здесь]()
Запустите сейчас, конечно:
![alt text]()
Да, вы собираетесь делать что-то:
![введите описание изображения здесь]()
Мне удалось поймать его в середине импорта, около 12 тыс. строк:
![введите описание изображения здесь]()
Все сделано, 49 325 строк успешно скопированы:
![введите описание изображения здесь]()
И мы выбираем из таблицы, чтобы увидеть строки:
![введите описание изображения здесь]()
Почему SSMS, инструмент, который активно развивается в течение 6 лет, все еще не получил права? Хотя Enterprise Manager был почти без ошибок от первоначальной команды разработчиков? Это еще один пример критических ошибок в SSMS. Последней критической ошибкой, которую я нашел было то, что она не script всех объектов.
Можем ли мы, чтобы команда разработчиков Enterprise Manager перезаписала SSMS?
Можно с уверенностью сказать, что единственные ответы, которые я увижу, это
- используйте другой инструмент.
- Вы сообщили об этом в Microsoft Connect?
- вызов PSS
Конечно, у меня есть обходной путь, прекратите использование SQL Server Management Studio. Но мне уже приходится запускать Enterprise Manager в 32-битной совместимости XP Mode (как вы можете видеть на тематических экранах Luna на рабочем столе Aero)
Me:
Я получил его на работу
Colleague:
Как?
Me:
Я использовал Enterprise Manager
Colleague:
Издевательство Ну.
Colleague:
Возможно, мне придется установить это.
Изменить: Чтение моего старого вопроса на ServerFault, о SSMS, не выполняющем скрипты некоторых таблиц в базе данных, в конце концов, "Honk, если вы ненавидите SSMS". Итак:
Хонк, если вы ненавидите SSMS.
Игра
Я создал билет в Microsoft Connect. Разместить ставки, если эта проблема будет Closed as not reproducible
. Измените этот вопрос, добавив свое имя и дату. Тот, кто ближе всего, не перейдет, выиграет 100 человек! (я пожертвую свою репутацию) Если у вас недостаточно ответов на редактирование вопросов, поместите свое предположение в комментарий, и я добавлю его.
The Guesses
Обновление: Оно закрыто 18.03.2011. Выкл. На 43 дня.
Ответы
Ответ 1
Ответ:
- Возьмите пистолет.
- Отследите ответственных и...
- Просто шучу. Но кто-то должен встать и взять на себя ответственность за свой мусор, не так ли? Мы бы на самом деле не стреляли в них, но иногда мы не хотим, чтобы мы могли встретиться лицом к лицу с человеком или командой и потребовать, чтобы они ответили, почему они сделали такую плохую работу?!?!
Я согласен, что в последних продуктах Microsoft есть какой-то настоящий мусор. В SSRS, когда вы нажимаете текстовое поле в середине существующего текста и нажимаете пасту, после операции вставки курсор находится в конце всего текста, а не в конце вложенного текста (посередине). SSRS и SSIS просто изобилуют всякими ерундами, подобными этому.
Ответ 2
У меня было несколько таких проблем. Этот волшебник абсолютно ненадежен. Если это одноразовая задача, я буду экспортировать в csv, а затем импортировать из csv. Если вам нужно регулярно запускать его, напишите свой собственный код. Недавно у нас было аналогичное обсуждение: должны ли программисты использовать SSIS, и если да, то почему?
Ответ 3
Есть только два способа, которыми я смог заставить 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. Честно говоря, если они не уволили всю команду, ответственную за эту функцию, я им не верю.
Ответ 4
Кажется, одна и та же проблема только что произошла со мной. Не удалось найти реальную проблему.
Я не знаю, поможет ли это вам, возможно, возникли проблемы с ПК и вставками для идентификации.
Цитата из ссылки:
"Включить вставку с идентификатором" также игнорируется при определенных обстоятельствах "
"мастер экспорта" пропущенных "записей, которые следует экспортировать"
"Включить вставку с идентификатором игнорируется, когда включена" оптимизация для нескольких таблиц ". К сожалению, этот параметр гарантирует, что операция импорта отслеживает ссылочную целостность между связанными с внешним ключом таблицами"
http://connect.microsoft.com/SQLServer/feedback/details/135905/mappings-settings-not-working-in-export-data-wizard
Очень странно и раздражает.
Являются ли эти крайние случаи - только потому, что SSIS сам используется в тихих больших проектах/БД, и я никогда раньше этого не встречал.
Ответ 5
У меня была аналогичная проблема, только 291 строка была перенесена из 540K строк, но мастер импорта показывал успех (я шел от SQL Server 2008 до 2005).
Решение: я изменил источник данных:
- from: Собственный клиент SQL Server 10.0
- to: Поставщик Microsoft OLE DB для SQL Server
как для источника, так и для адресата (в мастере импорта), а затем он работал.
В стороне:
Если я правильно понял ваши снимки экрана, вы также использовали SQL Server Native Client 10.0 в мастере импорта SSIS, когда он сработал, но вы использовали Microsoft OLE DB Provider для SQL Server при использовании Enterprise Manager при работе.
У меня не было проблем с использованием собственного клиента SQL Server в прошлом, поэтому я подозреваю, что в моем случае требуется переход на Microsoft OLE DB Provider для SQL Server из-за копирования данных с SQL Server 2008 до 2005 года.
Вы отлично поработали на снимках экрана, и ваш вопрос действительно помог мне - так спасибо:)