Изменение общего числа обработанных xx записей по умолчанию для сценариев данных SQL

В SQL Server 2008 вы можете щелкнуть правой кнопкой мыши базу данных и выбрать «Создать сценарии…». Затем вы можете выбрать конкретную таблицу и выбрать «Только данные» в разделе «Типы данных для сценария». Когда вы делаете это, он автоматически вставляет строку в скрипт каждые 100 записей:

напечатать "Обработано всего 100 записей"

По сути, он «пакетирует» записи, вставляемые в разделы по 100, и добавляет эти PRINT-статусы в конце каждого пакета. Хотя это нормально, когда вы вставляете пару тысяч записей, это становится бесполезным, когда вы импортируете миллион записей.

Есть ли способ изменить этот «пакетный» размер на другое значение, например «1000»? Я не мог найти это в списке опций при создании скрипта. Повлияет ли изменение этого значения на производительность при запуске скрипта или есть другие проблемы?


person Loki70    schedule 15.07.2011    source источник


Ответы (1)


Поиск и замена должны решить вашу непосредственную проблему, но создание сценария INSERT — это необычный способ копирования миллионов записей из одной базы данных в другую; есть ли какая-то конкретная причина, по которой вы хотите сделать это таким образом?

Более типичным методом будет bcp.exe или SSIS (если у вас есть более сложные потребности), поскольку они специально предназначены для работы с большими объемами данных. Или, если обе базы данных находятся на одном сервере, то INSERT...SELECT... будет самым быстрым способом из всех. документация объясняет различные параметры чистого TSQL и дает советы по производительности; SSIS — это большая тема.

person Pondlife    schedule 15.07.2011
comment
Хорошие моменты. Я должен был описать сценарий, ведущий к этому, более подробно. У меня есть клиент, компания которого не пускает НИКОГО извне на свои серверы. Я разработал приложение и базу данных на своей машине, которая является SQL 2008. К сожалению, целевой машиной на клиенте является SQL 2005. После долгих исследований я обнаружил, что вы не можете просто использовать обычные методы для переноса всей базы данных. при понижении рейтинга вот так. Поэтому мне приходится создавать сценарии для всего, включая заполнение данными. - person Loki70; 15.07.2011
comment
Значит, кто-то внутри компании должен развернуть ваше приложение? Рассматривали ли вы установку SQL 2005, подготовку базы данных и последующую отправку им файла резервной копии для восстановления? По крайней мере, вы должны разрабатывать ту же версию базы данных, что и ваш клиент. - person Pondlife; 18.07.2011
comment
Хороший вопрос, но опять же, это сложнее, чем это. Частью моего проекта была миграция их существующей базы данных MS Access на SQL. Не вдаваясь в подробности, скажу, что база данных Access была СЛОЖНОЙ, и перевести ее в SQL (через написанный мной пакет SSIS) было, мягко говоря, непросто. Поскольку я не хочу пытаться переписывать этот пакет SSIS в 2005 году, я застрял, пытаясь преобразовать свою базу данных 2008 года в базу данных 2005 года. - person Loki70; 18.07.2011
comment
Итак, можете ли вы использовать пакет SSIS 2008 для заполнения базы данных 2005 года? Предположительно, у вас есть все ваши DDL под управлением исходного кода, поэтому создать пустую базу данных 2005 года должно быть довольно просто (вы не можете использовать какие-либо функции, специфичные для 2008 года, потому что в любом случае целью является 2005 год). Затем используйте существующий пакет SSIS, но просто измените место назначения. Конечно, это все еще может быть нереалистичным; только вы достаточно хорошо знаете свою ситуацию, чтобы сказать, что может сработать. - person Pondlife; 19.07.2011