(Возврат на основную страницу)
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 не отбрасывает эти избыточные пакеты, но обрабатывает их со значительно меньшей производительностью.
Опасайтесь смешения режимов сопоставления в 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, с которым вы и познакомитесь, хотя в значительно улучшенной и проверенной форме.
Отладка 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. Это относительно простая концепция, она широко применяется при работе с БД, в которых имеются составные первичные ключи.
В качестве простого примера схемы БД, для которой необходимы составные соединения, рассмотрим систему управления школой. Одной из ее функций является отслеживание того, какие классы учатся в каких аудиториях. Система должна устанавливать соответствие между параметрами аудиторий и потребностями классов.
Сравнение 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, |
На базе AIX |
AIX 5.1 |
AIX
5L
выпуск 5.1 ML01+ (IY22854), |
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, |
Linux |
SuSE Linux Enterprise Server 7 |
Не требуется |
Sun Solaris |
Solaris 32-Bit 2.6 (5.6), 7 (5.7) |
Не требуется |
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.
· С помощью пусковых параметров может быть выполнена более точная настройка конфигурации.
Список литературы
SQL Server 2000 Books Online
Oracle documentation (http://docs.oracle.com/)
Oracle and SQL Server 2000 Price Comparison (http://www.microsoft.com/sql/evaluation/compare/pricecomparison.asp)
Why is SQL Server better/worse than Oracle? (http://www.mssqlserver.com/faq/general-sqlvsoracle.asp)
Top Ten TPC-C by Performance Version 5 Results (http://www.tpc.org/tpcc/results/tpcc_perf_results.asp)
Top Ten TPC-C by Price/Performance Version 5 Results (http://www.tpc.org/tpcc/results/tpcc_price_perf_results.asp)