(Возврат на основную страницу)

Содержание номера за Май 2003 

Editorial

MSDE и SQL Server

Microsoft SQL Server Desktop Engine (MSDE) представляет собой локальную СУБД, построенную на том же ядре обработки данных, что и SQL Server. Процесс разработки приложений для MSDE не отличается от разработки приложений для SQL Server, и это сходство может стать причиной путаницы, особенно когда речь идет о различиях между MSDE и SQL Server 2000 Personal Edition.

Вот семь самых важных различий между MSDE и SQL Server 2000 Personal Edition.

1. MSDE не поставляется отдельно

Microsoft поставляет MSDE в составе следующих продуктов: все редакции SQL Server 2000, Visual Studio .NET, ASP.NET Web Matrix, Microsoft Office XP Developer Edition и Microsoft Developer Network (MSDN) редакций Universal и Enterprise.

2. MSDE свободна от лицензионных платежей

MSDE бесплатна, хотя приходится платить за продукт, с которым она поставляется. Вам не нужно приобретать клиентские лицензии (CAL, Client Access License) для приложений, использующих БД под управлением MSDE, если MSDE не подключена к другой системе SQL Server в качестве клиента.

3. Для баз данных MSDE существуют ограничения

Размер БД MSDE не может превышать 2 Гб. Однако это не накладывает ограничений на максимальный объем хранимых данных, поддерживаемых механизмом MSDE, поскольку он может поддерживать несколько БД, при условии, что каждая из них меньше 2 Гб.

4. Для MSDE существуют аппаратные ограничения

Как и SQL Server 2000 Personal Edition, MSDE поддерживает системы, имеющие не более двух процессоров. Кроме того, MSDE может получать доступ только к 2 Гб оперативной памяти.

5. MSDE не имеет графических инструментов управления

Единственным инструментом, предоставляемым Microsoft для управления MSDE, является консольная утилита osql. В MSDE нет Query Analyzer, Data Transformation Services (DTS) Designer, Analysis Services. Нет даже справочной системы Books Online. Однако вы можете бесплатно загрузить ее со страницы http://www.microsoft.com/sql. Также вы можете управлять MSDE при помощи существующего комплекта инструментов SQL Server, как и любой другой системой SQL Server.

6. MSDE работает на 32-разрядных версиях Windows

Подобно SQL Server, MSDE поддерживает операционные системы Windows NT/2000/XP. Кроме того (как и SQL Server Personal Edition), MSDE работает на системах с Windows 9x/Me. Ограничения, с которыми вам придется столкнуться, когда вы запускаете MSDE на системах с Windows 9x/Me, — это отсутствие интегрированной модели безопасности, асинхронных I/O, упреждающего чтения и счетчиков Performance Monitor.

7. MSDE оптимизирована для одновременной работы пяти пользователей

Для обеспечения высокой производительности MSDE имеет управляемый регулятор (governor) параллельной загруженности, ограничивающий нагрузку пятью одновременно выполняемыми пакетами команд. Если вы создаете большую нагрузку, то регулятор параллельной загруженности постепенно снижает скорость системы. MSDE не отбрасывает эти избыточные пакеты, но обрабатывает их со значительно меньшей производительностью.

DB Design & Warehousing

Опасайтесь смешения режимов сопоставления в SQL Server 2000. Часть 1

Грегори А. Ларсен (Gregory A. Larsen)

Несколько месяцев назад я запускал хранимую процедуру, выполняющую перекрестное соединение БД на компьютере с установленным SQL Server 2000. Эта специфическая процедура обрабатывала записи таблицы из БД А, первоначально созданной на нашем SQL Server 2000, а также записи таблицы из БД В, также находящейся на нашем SQL Server 2000, но созданной в ходе восстановления резервной копии БД SQL Server 7.0. На компьютере с SQL Server 7.0 был установлен отличающийся от нашей БД SQL Server 2000 набор символов и порядок сортировки. Оператор SELECT хранимой процедуры соединял записи таблицы в БД А с таблицей в БД В на ключевом поле с типом данных varchar. Как вы думаете, что случилось? Хранимая процедура не была выполнена и возвратила "collation error" (ошибка режима сопоставления).

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

Если вы храните данные типа character с различными порядками сопоставления, знайте, что сравнение столбцов становится более сложной задачей. Ясно, что столбцы с одинаковыми порядками сопоставления можно сравнивать или соединять без каких-либо опасений. Однако, когда вы сравниваете столбцы, имеющие разный порядок сопоставления, необходимо обратить на это особое внимание при программировании.

Написание сценариев для создания индексов в SQL Server 2000

Рон Тэлмэйдж (Ron Talmage)

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

Добавление индексов к таблицам является наиболее эффективным способом оптимизации производительности выполнения запросов SQL Server. Чтобы обрабатывать различные пересылаемые вами аргументы поиска, в запрашиваемых таблицах часто может потребоваться создать нескольких индексов. Хотя есть одна исключительная ситуация, когда индексы на больших таблицах являются помехой. Когда вы выполняете массированное копирование данных в таблицу, наилучшим решением является полное отсутствие в ней индексов или наличие только кластерного индекса. В подобной ситуации лучшим решением является использование сценария на языке Transact-SQL для удаления и последующего добавления этих индексов. В этой статье описано, как использовать хранимые процедуры Transact-SQL для создания подобного индексного сценария Transact-SQL, более сильного и менее трудоемкого, чем инструмент создания сценариев из Enterprise Manager.

Недавно я принимал участие в проекте, целью которого было перемещение некоторого числа больших таблиц с одного сервера на другой. Мы решили использовать утилиту командной строки bcp.exe для экспорта данных и оператор BULK INSERT для импорта их в новую БД. Чтобы оптимизировать процесс импорта данных, на новых таблицах нам не были нужны никакие индексы (за исключением, разве что, кластерного).

Сначала мы использовали инструмент создания сценариев из Enterprise Manager, но столкнулись с рядом проблем, большая часть которых была связана с тем фактом, что нам пришлось выполнять множество операций вырезать/вставить для создания сценария, включающего только ограничения PRIMARY KEY и UNIQUE, индексы и ничего больше. То, что требовалось нам на самом деле, это сценарий, создающий таблицы без индексов, а затем добавляющий все индексы (в первую очередь кластерный), после того как таблица будет заполнена данными.

Нам нужен был такой инструмент создания сценариев, который мы могли бы усовершенствовать, чтобы обеспечить именно тот порядок индексов, что нам требовался. Я мог бы воспользоваться объектной моделью SQL-DMO для прохода по иерархии и вызывать сценарии оттуда, как это делает Enterprise Manager, но при этом мы рисковали наступить на те же грабли (степень гибкости). Вместо этого я создал собственный инструмент при помощи Transact-SQL, с которым вы и познакомитесь, хотя в значительно улучшенной и проверенной форме.

Programming

Отладка T-SQL с помощью Visual Studio .NET

Джон Пол Кук (John Paul Cook)

В этой статье показаны все шаги, необходимые для создания проекта БД .NET, создания пользовательских функций и их отладки.

Перед тем как описывать Visual Studio .NET T-SQL Debugger, давайте начнем с описания его предшественника — SQL Server T-SQL Debugger. Несмотря на то, что разработчики приучены использовать SQL Server T-SQL Debugger для отладки хранимых процедур, большинство из них не осознает, что его можно использовать также для отладки пользовательских функций. Однако, если вы выберите пользовательскую функцию в Object Browser и затем щелкните ее правой кнопкой мыши, опция Debug окажется недоступной.

Ключ для решения этой проблемы прост: вспомните, что SQL Server T-SQL Debugger отлаживает хранимые процедуры. Поэтому достаточно создать простую «оборачивающую» хранимую процедуру, вызывающую пользовательскую функцию, которую вы хотите отладить. Отлаживая хранимую процедуру, вы можете проникнуть в код пользовательской функции T-SQL. Если необходимо отладить функцию, то создание процедуры-оболочки — не слишком большая для этого цена.

Visual Studio .NET предлагает прямой интерфейс для отладки пользовательских функций. Нет необходимости создавать хранимую процедуру-оболочку для использования T-SQL Debugger из интегрированной среды разработки Visual Studio .NET. Многие задачи, прежде требовавшие использования инструментов SQL Server, могут быть выполнены прямо в среде разработки .NET. Для этой статьи использовался локальный компьютер под управлением Windows XP с SQL Server 2000 Developer Edition, service pack 1 и Visual Studio .NET Enterprise Architect, service pack 1. Когда SQL Server и Visual Studio .NET установлены локально на одну машину, не возникает никаких особых конфигурационных проблем. Однако в случае удаленной отладки все обстоит иначе, о чем мы поговорим позднее. Удаленным сервером для этой демонстрации служил Windows 2000 с SQL Server 2000 Developer Edition без установленных пакетов обновлений.

Экзотические соединения в SQL. Часть 2

Крис Кубли (Chris Cubley), MCSD

В предыдущей статье вы познакомились с тем, как использовать в соединениях оператор BETWEEN для решения проблем, относящихся к обработке данных с диапазонами значений. В этой статье я покажу, как еще дальше продвинуться в использовании соединений, вводя в них составные критерии, а также операторы сравнения: «меньше чем», «больше чем» и «не равно».

Составные соединения

Составными называются такие соединения, в которых используются составные критерии, построенные при помощи логических операторов, таких как AND. Это относительно простая концепция, она широко применяется при работе с БД, в которых имеются составные первичные ключи.

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

Other

Сравнение SQL Server 2000 и Oracle 9i

Александр Чигрик (Alexander Chigrik)

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

Сравнение платформ

SQL Server 2000 работает только на платформе Windows, включая Windows 9x/NT/2000 и Windows CE. В отличие от SQL Server 2000, Oracle 9i  поддерживает все известные платформы, включая платформы на базе Windows, системы на базе AIX, Compaq Tru64 UNIX, НР-UX на основе HP 9000, Linux Intel, Sun Solaris и др.

Системные требования

Для установки SQL Server 2000 нужна Intel или совместимая с Intel платформа и аппаратное обеспечение, перечисленное в табл. 1.

Табл. 1

Компонент

Требования
Процессор Pentium 166 MГц или выше
Объем оперативной памяти

32 Mб (минимум для Desktop Engine).

64 Mб (минимум для всех других редакций).

Рекомендуется 128 Mб или более

Объем свободного дискового пространства

270 Mб (полная установка).

250 Mб (типовая установка).

95 Mб (минимальная установка).

Desktop Engine: 44 Mб.

Analysis Services: 50 Mб минимальная установка и 130 Mб — типовая.

English Query: 80 Mб

Oracle 9i поддерживает Intel и совместимые с Intel платформы, системы на базе AIX, Compaq Tru64 UNIX, НР-UX на основе HP 9000, Linux Intel, Sun Solaris и др.

Для установки Oracle 9i на системы с Intel и совместимыми с Intel платформами вам потребуется аппаратное обеспечение, перечисленное в табл. 2.

Табл. 2

Компонент

Требования

Процессор

Pentium 166 MГц или выше

Объем оперативной памяти

128 Мб (рекомендуется 256 Мб).

Виртуальная память: минимальный размер — 200 Мб, максимальный — 400 Мб

Объем свободного дискового пространства

140 Mб на системном диске плюс 4,5 Гб для Oracle Home Drive (FAT) или 2,8 Гб для Oracle Home Drive (NTFS)

Для установки Oracle 9i  на системы UNIX, например, системы на базе AIX, Compaq Tru64 UNIX, HP-UX на основе HP 9000, Linux Intel и Sun Solaris, необходимо аппаратное обеспечение, перечисленное в табл. 3.

Табл. 3

Аппаратное обеспечение

Требования

Оперативная память

512 Mб минимум

Размер файла подкачки

Минимальный размер — 2xRAM или 400 Mб (или любого большего размера)

Объем свободного дискового пространства

4,5 Гб

Требования к программному обеспечению

Существует шесть редакций SQL Server 2000: Enterprise, Standard, Personal, Developer, Desktop Engine и SQL Server CE (совместимая с Windows CE). Необходимое программное обеспечение перечислено в табл. 4.

Табл. 4

Операционная система

Enterprise Edition

Standard Edition

Personal Edition

Developer Edition

Desktop Engine

SQL Server CE

Windows CE

Нет

Нет

Нет

Нет

Нет

Да

Windows 9x

Нет

Нет

Да

Нет

Да

Нет

Windows NT 4.0 Workstation, Service Pack 5

Нет

Нет

Да

Да

Да

Нет

Windows NT 4.0 Server, Service Pack 5

Да

Да

Да

Да

Да

Нет

Windows NT 4.0 Server Enterprise Edition, Service Pack 5

Да

Да

Да

Да

Да

Нет

Windows 2000 Professional

Нет

Нет

Да

Да

Да

Нет

Windows 2000 Server

Да

Да

Да

Да

Да

Нет

Windows 2000 Advanced Server

Да

Да

Да

Да

Да

Нет

Windows 2000 DataCenter

Да

Да

Да

Да

Да

Нет

Windows XP Professional

Нет

Нет

Да

Да

Да

Нет

Существует три редакции Oracle 9i : Enterprise, Standard и Personal. Необходимое программное обеспечение перечислено в табл. 5.

Табл. 5

Платформа

Версия операционной системы

Требуемые пакеты обновления

На базе Windows

Windows NT 4.0

Service Pack 5

На базе Windows

Windows 2000

Service Pack 1

На базе Windows

Windows XP

Не требуется

На базе AIX

AIX 4.3.3

Maintenance Level 09 и IY24568,
IY25282, IY27614, IY30151

На базе AIX

AIX 5.1

AIX 5L выпуск 5.1 ML01+ (IY22854),
IY26778, IY28766, IY28949, IY29965, IY30150

Compaq Tru64 UNIX

Tru64 5.1

5.1 patchkit 4

Compaq Tru64 UNIX

Tru64 5.1A

5.1A patchkit 1

HP-UX

HP-UX версии 11.0 (64-битная)

Sept. 2001 Quality Pack, PHCO_23792,
PHCO_24148, PHKL_24268, PHKL_24729,
PHKL_ 25475, PHKL_25525, PHNE_24715,
PHSS_23670, PHSS_24301, PHSS_24303,
PHSS_24627, PHSS_22868

Linux

SuSE Linux Enterprise Server 7
(или SLES-7) с kernel 2.4.7,
и glibc 2.2.2

Не требуется

Sun Solaris

Solaris 32-Bit 2.6 (5.6), 7 (5.7)
или 8 (5.8)

Не требуется

Sun Solaris

Solaris 64-Bit 8 (5.8)

Update 5

Сравнение производительности

Очень трудно сравнить производительность SQL Server 2000 и Oracle 9i. Производительность вашей БД зависит скорее от опытности разработчиков и администраторов, чем от поставщика СУБД. Вы можете использовать обе СУБД для построения стабильных и эффективных систем. Существует возможность определить типичные транзакции, например, используемые в системах управления запасами, резервирования авиабилетов и в банковских системах. После определения этих типичных транзакций можно запустить их в разных системах управления БД, работающих на различных аппаратных средствах и программных платформах.

Тесты TPC

Transaction Processing Performance Council является независимой организацией, определяющей типичные транзакции (используемые в системах управления запасами, резервирования авиабилетов и в банковских системах) и некоторые главные правила, которым эти транзакции должны удовлетворять.

Организация TPC проводит тестирования, измеряющие скорость обработки транзакций и производительность БД на основе того, как много транзакций данная система и БД может выполнить в единицу времени, например, транзакций в секунду или в минуту.

Организацией TPC подготовлены спецификации для множества испытаний. Существуют тесты TPC-C, TPC-H, TPC-R, TPC-W и некоторые старые тесты, такие как TPC-A, TPC-B и TPC-D. Наиболее популярным испытанием является тест TPC-C (OLTP-тест).

На момент написания этой статьи (согласно тесту TPC-C) SQL Server 2000 в кластерной конфигурацией и с использованием Distributed Partitioned Views и некластерной конфигурации удерживает первое место по производительности.

Примечание   Поскольку большинство организаций на самом деле не используют очень большие БД, те важные пункты, по которым SQL Server 2000 выиграл испытания TPC-C, не являются определяющими для подавляющего большинства компаний.

Сравнение цены

Одно из основных преимуществ SQL Server 2000 по сравнению с Oracle 9i  — более низкая цена. Другим преимуществом SQL Server является то, что Microsoft включает OLAP (Online analytical processing) и Data Mining (глубинный анализ данных) в качестве стандартных функций SQL Server 2000 Enterprise Edition. Таким образом, если вы используете OLAP и Data Mining, то можете потратить в четыре раза меньше, приобретя SQL Server 2000 Enterprise Edition.

Приведенное в табл. 6 сравнение цен основано на статье «Oracle and SQL Server 2000 Price Comparison», размещенной на Web-сайте компании Microsoft.

Табл. 6

Количество процессоров

Oracle9i Standard Edition

SQL Server 2000 Standard Edition

1

15000 $

4999 $

2

30000 $

9998 $

4

60000 $

19996 $

8

120000 $

39992 $

16

240000 $

79984 $

32

480000$ 159968$

Сравнение цен SQL Server 2000 Enterprise Edition (включающей в себя OLAP и Data Mining) и Oracle9i Enterprise Edition с OLAP и/или Data Mining приведено в табл. 7.

Табл. 7

Количество процессоров

Oracle9i Enterprise Edition

Oracle9i Enterprise Edition с OLAP или Data Mining

Oracle9i Enterprise Edition с OLAP и Data Mining

SQL Server 2000 Enterprise Edition

1

40000 $

60000 $

80000 $

19999 $

2

80000 $

120000 $

160000 $

39998 $

4

160000 $

240000 $

320000 $

79996 $

8

320000 $

480000 $

640000 $

159992 $

16

640000 $

960000 $

1280000 $

319984 $

32

1280000 $

1920000 $

2560000 $

639968 $

Примечание            Это приблизительное соотношение цен. У вас могут быть какие-либо скидки, кроме того, цены могут увеличиваться или уменьшаться в будущем.

Сравнение функций

Как SQL Server 2000, так и Oracle 9i  поддерживает ANSI SQL-92 начального уровня и не поддерживает ANSI SQL-92 среднего уровня. В разделе «T-SQL против PL/SQL» этой статьи я хочу кратко сопоставить языки Transact-SQL и PL/SQL и показать некоторые ограничения для SQL Server 2000 и Oracle 9i .

T-SQL против PL/SQL

Диалект языка SQL, поддерживаемый Microsoft SQL Server 2000 называется Transact-SQL (T-SQL). Диалект SQL, поддерживаемый Oracle 9i  называется PL/SQL. PL/SQL является более мощным языком, чем T-SQL. Их краткое сопоставление приведено в табл. 8.

Табл. 8

Возможности

PL/SQL

T-SQL

Индексы

B-Tree индексы.

Битовые индексы.

Секционированные индексы (partitioned index).

Индексы, основанные на функции (Function-based index).

Доменные индексы (Domain index)

индексы B-Tree

Таблицы

Реляционные таблицы.

Таблицы объектов.

Временные таблицы

Реляционные таблицы.

Временные таблицы

Триггеры

триггеры BEFORE.

триггеры AFTER.

триггеры INSTEAD OF

триггеры AFTER.

триггеры INSTEAD OF

Процедуры

операторы PL/SQL.

методы Java.

Процедуры, написанные на языке третьего поколения (3GL)

операторы T-SQL

Массивы

Поддерживаются

Не поддерживаются

Ограничения SQL Server 2000 и Oracle 9i

некоторые ограничения SQL Server 2000 и Oracle 9i перечислены в табл. 9.

Табл. 9

Функция

SQL Server 2000

Oracle 9i

длина имени БД

128

8

длина имени столбца

128

30

длина имени индекса

128

30

длина имени таблицы  

128

30

длина имени представления  

128

30

длина имени хранимой процедуры

128

30

длина индекса

900

749

максимальное количество столбцов в индексе

16

32

максимальный размер для char()

8000

2000

максимальный размер для varchar()

8000

4000

максимальное количество столбцов в таблице

1024

1000

максимальная длина строки таблицы

8036

255000

рекурсивный подзапрос

40

64

Заключение

Нельзя сказать, что SQL Server 2000 лучше Oracle 9i или наоборот. Оба эти продукта могут быть использованы для построения стабильной и эффективной системы. Стабильность и эффективность ваших приложений и БД зависит в большей мере от опытности разработчиков БД и их администраторов, чем от поставщика БД.

Преимущества SQL Server 2000:

·       SQL Server 2000 дешевле Oracle 9i.

·       SQL Server 2000 имеет лучший результат по производительности и соотношению цена/производительность (согласно тесту TPC-C).

·       Общепризнанно, что SQL Server 2000 проще устанавливать, использовать и управлять.

Преимущества Oracle 9i:

Oracle 9i поддерживает все известные платформы (а не только на базе Windows).

·       Язык PL/SQL мощнее T-SQL.

·       С помощью пусковых параметров может быть выполнена более точная настройка конфигурации.

Список литературы

  1. SQL Server 2000 Books Online

  2. Oracle documentation (http://docs.oracle.com/)

  3. Oracle and SQL Server 2000 Price Comparison  (http://www.microsoft.com/sql/evaluation/compare/pricecomparison.asp)

  4. Why is SQL Server better/worse than Oracle? (http://www.mssqlserver.com/faq/general-sqlvsoracle.asp)

  5. Top Ten TPC-C by Performance Version 5 Results (http://www.tpc.org/tpcc/results/tpcc_perf_results.asp)

  6. Top Ten TPC-C by Price/Performance Version 5 Results (http://www.tpc.org/tpcc/results/tpcc_price_perf_results.asp)

(Возврат на основную страницу)

Hosted by uCoz