Опубликован: 11.12.2006 | Уровень: специалист | Доступ: платный
Лекция 24:

Загрузка базы данных

Аннотация: Если предприятие работает достаточно долго, то, наверняка, создалась огромная база данных результатов работы. Возможно даже, что она была создана в отличных от SQL Server системах. Но, решив переходить на SQL Server 2000, вы столкнетесь с проблемой перенесения базы данных из прошлой системы в новую. Понять принципы загрузки базы данных в SQL Server, самостоятельно осуществлять массовое копирование с помощью BCP, обеспечивать целостность данных вы сможете, изучив данный материал.

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

  • Использование программы Bulk Copy Program (BCP). BCP – это внешняя программа, поставляемая вместе с Microsoft SQL Server 2000 для загрузки файлов данных в базу данных. BCP можно также использовать для копирования данных из какой-либо таблицы SQL Server в файл данных.
  • Использование оператора BULK INSERT. Оператор Transact-SQL (T-SQL) BULK INSERT позволяет вам копировать большие объемы данных из файла данных в таблицу SQL Server в рамках системы SQL Server. Поскольку этот оператор является оператором SQL (выполняется из ISQL, OSQL или анализатора запросов Query Analyzer), то весь процесс выполняется как поток SQL Server. Этот оператор нельзя использовать для копирования данных из SQL Server в файл данных.
  • Использование служб преобразования данных Data Transformation Services (DTS). DTS – это набор инструментальных средств, поставляемых вместе с SQL Server, которые намного упрощают задачу копирования данных в SQL Server и из SQL Server. В набор DTS включен мастер для импорта данных и мастер для экспорта данных.
Примечание. Хотя переходные таблицы сами по себе не содержат механизма загрузки данных, но их обычно используют при загрузке базы данных.

Каждый из этих методов обладает различными возможностями и характеристиками. Вы обязательно найдете хотя бы один метод, отвечающий вашим требованиям.

Примечание. Восстановление базы данных из файла резервной копии можно также рассматривать как форму загрузки в базу данных, но поскольку резервное копирование и восстановление описываются в "Резервное копирование Microsoft SQL Server" и "Восстановление и воспроизведение базы данных" , эти темы здесь не рассматриваются. Определенные параметры конфигурирования базы данных являются общими для программы BCP и для оператора BULK INSERT. Эти параметры базы данных определяют, как выполняется массовое копирование. Эти параметры должны быть заданы до начала операций загрузки данных.

Для вас могут оказаться полезными следующие дополнительные операции:

  • Оператор SELECT...INTO. Этот оператор используется для копирования данных из одной таблицы в другую.
  • Переходные таблицы.Переходные таблицы – это временные таблицы, которые обычно используются для преобразования данных внутри базы данных. Вы можете использовать эти таблицы, чтобы облегчить процесс загрузки и модифицировать данные во время загрузки.

Производительность операций загрузки

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

Параметры журнального протоколирования

SQL Server использует достаточно сложный механизм протоколирования, чтобы исключить потери данных в случае отказа системы. Журнальное протоколирование имеет важное значение для целостности данных в системе, но оно может существенно увеличивать нагрузку на систему. Вы можете снижать эту нагрузку за счет уменьшения количества протоколируемых данных во время массовых загрузок.

Примечание.. После отказа системы SQL Server восстановит базу данных. Для всех транзакций, которые не были фиксированы на момент отказа, будет выполнен откат (отмена). Все транзакции, которые были фиксированы на момент отказа, будут повторно выполнены (восстановлены). Откат и повторное выполнение транзакций возвратят систему в состояние, в котором она находилась перед отказом. (О резервном копировании и восстановлении см. "Резервное копирование Microsoft SQL Server" и "Восстановление и воспроизведение базы данных" .)

По умолчанию все операции вставки в базу данных полностью протоколируются, что позволяет выполнить восстановление и откат транзакций в случае отказа системы. Отключая полное протоколирование массового копирования (которое выполняется с помощью программы BCP, оператора BULK INSERT или оператора SELECT...INTO ), вы можете снизить количество протоколируемых данных, но при этом будут поддерживаться только операции отката. Это повысит производительность резервного копирования, но потребует повторного запуска всего процесса загрузки в базу данных в случае отказа системы, поскольку не будет выполняться журнальное протоколирование, которое обычно используется для восстановления базы данных. Этот вариант относится к переходным таблицам, только если вы загружаете эти таблицы с помощью описанных выше методов массового копирования.

Полное протоколирование этих операций массового копирования отключается при выполнении всех следующих условий:

Еще один параметр базы данных – trunc. log on chkpt – отключает сохранение журнальных записей, когда для этого параметра задано значение TRUE. В этом случае происходит усечение журнала транзакций каждый раз, как встречается контрольная точка. Это повышает производительность массового копирования, но означает, что вы не получите ни повторного выполнения, ни отката в случае отказа системы.

Внимание. Если вы активизируете параметр trunc. log on chkpt (задав для него значение TRUE ), то вам следует делать это, только если вы первоначально загрузили данные в базу данных. Полное отключение протоколирования влияет на всю базу данных и может сделать систему невосстанавливаемой. Таким образом, этот параметр никогда не следует использовать в производственной системе при обычных операциях, когда восстановление важно для системы. Если вы все-таки задали значение TRUE для параметра trunc. log on chkpt, не забудьте отключить его, когда закончите операцию массовой загрузки.
Максим Ерохин
Максим Ерохин
Россия, г. Санкт-Петербург
Татьяна Лубинец
Татьяна Лубинец
Россия, Уфа, Уфимский авиационный институт, 1987