Извлечь Active Directory в базу данных SQL с помощью VBScript - PullRequest
0 голосов
/ 10 февраля 2012

Я написал VBScript для извлечения данных из Active Directory в набор записей. Теперь мне интересно, как наиболее эффективно передать данные в базу данных SQL.

Я разрываюсь между;

  • Запись его в файл Excel, а затем запуск пакета SSIS для его импорта или ...
  • Внутри VBScript итерация по набору данных в памяти и отправка 3000+ INSERT команд в базу данных SQL

Приведет ли последний вариант к 3000+ циклам обмена данными с базой данных и, следовательно, будет медленнее из двух вариантов?

Ответы [ 3 ]

2 голосов
/ 10 февраля 2012

Отправка вставки строка за строкой всегда самая медленная опция.Это то, что называется Row от Agonizing Row или RBAR.Вам следует избегать этого, если это возможно, и использовать преимущества операций на основе множеств.

Другой вариант - запись в промежуточный файл - хороший вариант, я согласен с @Remou в комментариях, что вам следует выбрать CSV, а не Excel, если вы собираетесь выбрать этот параметр.

Я бы предложил третий вариант.У вас уже есть дизайн в VB, содержащийся в вашем VBscript.Вы должны быть в состоянии легко преобразовать это в компонент сценария в SSIS.Создайте пакет служб SSIS, добавьте задачу DataFlow, добавьте компонент Script ( в качестве источника данных {пример здесь} ) в поток, запишите свои поля в выходной буфер, а затем добавьте назначение SQL и сохранитеСам шаг записи в промежуточный файл.Это также более безопасно, так как вы нигде не храните данные AD в незашифрованном виде на диске.

0 голосов
/ 10 февраля 2012

Если он уже есть в наборе данных и если это SQL Server 2008+, создайте пользовательский тип таблицы и отправьте весь набор данных в виде атомарной единицы.

И если вы пойдете по пути SSIS, у меня будет сообщение, охватывающее Active Directory как источник данных SSIS

0 голосов
/ 10 февраля 2012

Вы не упоминаете, как часто это будет выполняться или нужно ли запускать его в течение определенного промежутка времени, поэтому не ясно, что производительность здесь даже является проблемой. «Медленный» сам по себе ничего не значит: процесс, который выполняется в течение 30 минут, может быть вполне приемлемым, если временное окно составляет один час.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...