Продолжается подписка на наши издания! Вы не забыли подписаться?

Microsoft SQL Server 7.0

Технические характеристики

Microsoft SQL Server работает на любой аппаратной платформе, на которуюой поддерживается Win32. На сегодня это PC (Intel), Alpha (Compaq), MIPS и (под большим вопросом) Power PC (IBM, Motorola). До версии 7.0 MS SQL Server работал только под управлением ОС Windows NT, но в седьмой версии появилась возможность (хотя и с некоторыми ограничениями) работать под управлением Windows 95/98. Естественно, что MS SQL Server 7.0 работает под управлением бета-версии Windows 2000 (бывшей Windows NT 5), причем при его установке на компьютер с Windows NT 4 предварительно необходимо проинсталлировать Service Pack 4 и обновленный вариант Microsoft Internet Explorer 4.0 (SP1), а под Windows 2000 он ставится без каких-либо дополнительных действий. Использование даже бета-версии Windows 2000 дает дополнительные преимущества (скорее всего, MS SQL Server 7.0 и Windows 2000-сервер были специально оптимизированы для совместной работы).

Инсталляция и первичная настройка

Здесь MS SQL Server не было равных. MS SQL Server 7.0 можно по праву назвать самым простым в установке и первичной настройке SQL-сервером. MS SQL Server 7.0 поддерживает удаленную установку. Простотой установки самого сервера сегодня удивить никого нельзя, а вот простотой настройки "клиента" могут похвастаться немногие. MS SQL Server - именно такой продукт. Установка клиентской части проходит очень просто и сразу же после этого (даже без перезагрузки) вам становятся доступны все серверы, установленные в сети. По умолчанию MS SQL Server использует протокол "Named Pipes". В версии 6.5 (до Service Pack (SP) 3) это вызывало задержки при обращении к серверу, но SP 3 устранил эту проблему. MS SQL Server 7.0 работает с одинаковой скоростью по любому из поддерживаемых протоколов. Переключить протокол можно из утилиты "Client Network Utility". Там же можно настроить разные протоколы для каждого сервера в сети (на одном компьютере может быть запущен только один SQL-сервер, но зато каждый из них может управлять несколькими базами данных).

Рис. 1 Утилита настройки "клиента"

При установке MS SQL Server автоматически определяет язык, установленный в операционной системе, и устанавливает аналогичные настройки, которые, впрочем, можно изменить, выбрав режим "custom" (см. Рис. 2)

Рис. 2 Выбор набора символов и параметров сортировки

Но все-таки, при всех достоинствах и простоте седьмой версии, и у нее нашелся серьезный недостаток. Ранее (в версии 6.х) был только один полнофункциональный сервер (если, конечно, не считать MS SQL Server 6.5 Enterprise Edition, предназначенный для работы под управлением ОС Windows NT Server Enterprise Edition). MS SQL Server 6.5 можно было поставить как на Windows NT Server, так и на Windows NT Workstation. Теперь же поставка MS SQL Server состоит по сути из двух продуктов: MS SQL Server Standard Edition (полнофункциональный вариант) и MS SQL Server Desktop Edition (несколько облегченный вариант, предназначенный для Windows 9х и Windows NT Workstation). Кроме этого существуют Enterprise Edition и Small Business Server (SBS), поставляемые отдельно. И, собственно, где же здесь проблема, спросите вы? А проблема в том, что на Windows NT Workstation больше нельзя поставить полный (Standard Edition) вариант сервера. Это увеличивает общую стоимость, особенно при специально выделенном сервере БД, так как Windows NT Server стоит на порядок дороже, чем Windows NT Workstation, а их функциональность в объеме, требуемом для SQL сервера, практически идентична. Утешением является только то, что Desktop Edition поддерживает удаленных клиентов без ограничений (официально до пяти, но фактически ограничений нет) и единственным ограничивающим фактором является его архитектурная ограниченность по сравнению с полной версией. Полный список различий в поддержке некоторых возможностей разными редакциями MS SQL Server 7.0, можно найти в таблице 1.

Таблица 1 Сравнение совместимости разных редакций SQL Server

Возможность/редакция сервера

SBS

Desktop

Standard

Enterprise

Работа на MS Windows NT Workstation и Windows 9х

Нет

Да

Нет

Нет

Работа на MS BackOffice(r) Small Business Server

Да

Да ;-)

Да

Нет

Работа на MS Windows NT(r) Server

Нет

Да ;-)

Да

Нет

Работа на MS Windows NT Server, Enterprise Edition

Нет

Да ;-)

Да

Да

Максимальный размер базы данных

10 GB

Не ограничен

Не ограничен

Не ограничен

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

4

4 (но эффективность падает при наличии более 2-х процессоров и, естественно, только под Windows NT)

4

32

Поддержка расширенной памяти

Нет

Нет

Нет

Да

Поддержка Failover clusters (работы в кластерном режиме для увеличения надежности системы)

Нет

Нет

Нет

Да

Поддержка MS Search Service, полнотекстовых каталогов и индексирования

Да

Нет

Да

Да

Поддержка MS SQL Server OLAP Services

Нет

Нет

Да

(без определяемых пользователем cube partitions)

Да

(с определяемыми пользователем cube partitions)

Оптимизация (минимизация) использования памяти

Нет

Да

Нет

Нет

Параллельные запросы

Да

Нет

Да

Да

Fiber mode scheduling

Да

Нет

Да

Да

Опережающее чтение

Да

Нет

Да

Да

Hash и merge соединения (joins)

Да

Нет

Да

Да

MS SQL Server Desktop Edition, установленный на Windows 9x, имеет дополнительный ряд ограничений:

Хотя приведенный выше список довольно велик, каждый из пунктов все же не является критичным, так что если нет претензий к производительности, MS SQL Server 7.0 Desktop Edition можно с успехом использовать как невыделенный сервер для 1-5 пользователей.

Категория

Подкатегория

Требования

Компьютер   DEC Alpha-cовместимые системы
Intel(r)-cовместимые системы (Pentium 166 MHz или выше, Pentium PRO/II/III) На компьютере с архитектурой P6 имеет явные преимущества.
Память (RAM) Enterprise 64 MB минимум
  Остальные редакции 32 MB минимум
Дисковая подсистема   CD-ROM
Занимаемое пространство на жестком диске SQL Server 180 MB (full)
170 MB (typical)
65 MB (minimum)
90 MB (management tools only)
  OLAP Services 50 MB
  English Query 12 MB
Операционная система Enterprise Microsoft Windows NT Server Enterprise Edition version 4.0 с SP4 или выше (Windows 2000 Server Advanced Server)
  Standard/
Small Business
Windows NT Server 4.0 с SP4 или выше, Microsoft BackOffice(r) Small Business Server или ОС перечисленные выше
  Desktop/Утилиты администрирования Windows NT Server 4.0 с SP4 или выше, Microsoft Windows(r) 95/98 или ОС перечисленные выше
Дополнительное программное обеспечение   Microsoft Internet Explorer 4.01 с SP1 или выше

Установленная сетевая поддержка

Поддерживаются клиенты на платформах   Windows 95/98/3.х, Windows NT (2000), DOS.

Примечания: Windows NT SP4 входит в состав поставки SQL Server. Internet Explorer необходим для работы средств администрирования (Microsoft Management Console - MMC) и HTML Help. Клиенты на отличных от Windows платформах (UNIX4, Apple MacOS(r) и OS/2) могут работать при наличии ODBC-драйверов третьих фирм.

Сетевые протоколы

При установке на клиентский компьютер копируются DLL-библиотеки для всех поддерживаемых протоколов, вот их список:

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

Использование

Администрирование

В поставку MS SQL Server входит небольшой, но вполне достаточный набор средств администрирования (см. Рис. 3).

Рис. 3 Программное меню SQL Server 7.0

документация - в ней отражены все аспекты, от физической организации хранения данных на дисках до мелких советов, предназначенных для начинающих пользователей. Документация представлена в новом формате - HTML Help, что обеспечивает контекстный и полнотекстовый поиск по всем разделам справочной системы.

Query Analyzer - под столь загадочным названием скрывается "Talker" (утилита интерактивного взаимодействия с SQL сервером, ранее называемая isqlw). Свое название Query Analyzer получил потому, что в нем реализована функция графического анализа SQL запросов. Это действительно шаг вперед, так как графическое представление данных значительно упрощает понимание алгоритмов выбранных оптимизатором запросов. К тому же, выделив правой кнопкой мыши один из узлов дерева запроса, можно получить доступ к средствам управления индексами и статистикой (см. Рис. 4).

Рис. 4 Графический анализатор запросов

Другим приятным нововведением стала подсветка синтаксиса SQL-запроса. Еще одним сильным преимуществом, этого продукта является то, что он Еще одним сильным преимуществом, этого продукта является то, что он выполняет запросы в отдельном потоке. Это дает возможность продолжать работать с ним даже в момент выполнения сложного запроса, а при необходимости можно даже прирвать выполнение текущего запроса. Появилась возможность получать результат в табличной форме, но, по моему, это не дает никаких преимуществ. В остальном этот продукт похож на его аналоги от других производителей, но в целом оставляет более приятные впечатления.

Enterprise Manager -основное средство администрирования, если вы, конечно, не приверженец командной строки. Enterprise Manager построен по принципу интегрированной системы администрирования. Вследствие этого он впитал такое множество административных функций, что их описание выходит за рамки обзора. Скажу только, что здесь найдутся интересные места не только для администратора, желающего сделать backup, но и для разработчика, который, например, может создать здесь графическую модель БД. К достоинствам этого продукта можно отнести: стабильность и удобство работы, интуитивную понятность, а также то, что он основан на ActiveX-библиотеке SQL-DMO, это позволяет создавать администраторские сценарии на любом языке, поддерживающем automation (например: Visual Basic или JavaScript). Странно, что Microsoft являющийся лидером в области средств разработки и усиленно продвигающий VBA, не догадался встроить VBA в Enterprise Manager. Единственным, но довольно-таки серьезным недостатком Enterprise Manager является его медленная (ооо-чень медленная) работа. Неудобства ощущались даже на машине, оснащенной двумя 333-мегагерцовыми процессорами Pentium II и 256-ю мегабайтами памяти, хотя сам сервер с успехом работал на Pentium 120 с 64-я мегабайтами.

Profiler - эта программа предназначена для целей отладки и мониторинга SQL-запросов. Она мало чем отличается от своей предыдущей версии, хотя и стала немного поудобнее.

Удаленное администрирование

Все перечисленные выше компоненты, за исключением Client Network Utility, поддерживают как локальный, так и удаленный режим работы.

Совместимость со стандартами

MS SQL Server версии 7.0 соответствует стандарту SQL-92. Как сказано в документации, "SQL Server 7.0 создан в соответствии со стандартом SQL-92, фокусируясь на SQL-92 как основном диалекте...". Кроме SQL-92, MS SQL Server 7.0 поддерживает значительно более мойный Transact-SQL (T-SQL). T-SQL - это процедурный (в отличии от классического SQL), базирующийся на SQL язык, созданный компанией Sybase. Этот язык, претерпев некоторые (косметические) изменения, о них будет говориться далее, по прежнему является совместимым со своим исходным вариантом. Имеющиеся разногласия между диалектами SQL-92 и T-SQL легко обходятся за счет настроек и использования предопределенных переменных (ANSI_DEFAULTS, ANSI_NULLS, ANSI_WARNINGS и т.п.).

К сожалению (а может и к счастью, судить вам), в Microsoft не поддержали почин объектно-ориентированного расширения SQL-серверов. Взамен в Microsoft был создан Microsoft Transaction Server (MTS), базирующийся на технологии DCOM и предназначенный для создания, "промежуточного слоя" аккумулирующего бизнес-логику, разгружающего SQL-сервер и позволяющего распределить нагрузку на несколько компьютеров.

Драйверы и API

MS SQL Server поддерживает:

MS SQL Server 7.0 не поддерживает JDBC. Вместо этого в Visual J++ можно использовать ADO.

Что такое T-SQL

T-SQL (Transact-SQL) это процедурное расширение непроцедурного SQL, сделанное еще на заре становления SQL технологий фирмой Sybase.

Где применим

T-SQL - это гибкий и удобный язык, применимый в любом месте, где применимы SQL-выражения, а именно: в запросах, триггерах, хранимых процедурах. Единственным ограничением использования T-SQL является API, используемый при обращении к SQL Server. Не все функции из ODBC, DB-Lib и RDO позволяют использовать T-SQL. В основном ограничения касаются функций работы с курсорами (курсор применяется для интерактивного отображения и редактирования набора записей).

Прокручиваемые курсоры

В SQL Server до версии 7 единственным способом создать курсор с использованием T-SQL было помещение кода на T-SQL в хранимую процедуру и последующий вызов этой процедуры. Но и при использовании хранимых процедур ограничений, налагаемых на использование T-SQL при создании курсоров, было настолько много, что практически, используя ODBC или RDO, курсор можно было создать только по однострочному SQL-запросу (SELECT...). Единственным средством, позволяющим создать прокручиваемый курсор с использованием сложного T-SQL запроса, была Delphi компании Inprise/Borland. Это можно сделать, используя объект TQuery. Но на самом деле TQuery попросту перекачиваетл данные на клиентскую машину в однонаправленном режиме, используя не функции работы с курсором, а функции потоковой выборки. Далее он кэшировал полученные данные в парадоксовской таблице, на базе которой он, собственно, и эмулировал прокручиваемый курсор.

Не говоря о количестве проблем, возникающих при этом (поверьте их более чем достаточно), скажем только, что TQuery является объектом Delphi и его можно применять лишь в двух продуктах Inprise: Delphi и C++Builder.

Но новая версия SQL Server в качестве базового (низкоуровневого) интерфейса использует не DB-Lib (используемый ранее), а OLE DB. OLE DB-реализация позволяет получать прокручиваемые курсоры, используя все возможности T-SQL даже без применения хранимых процедур. Единственный секрет, который надо знать - если в запросе более одного оператора SELECT, INSERT, UPDATE или DELETE, то в начале запроса надо поставить команду "SET NOCOUNT ON", а перед последним оператором SELECT - "SET NOCOUNT OFF".

Так как ADO основывается на OLE DB, то и в нем можно применять T-SQL любой сложности.

Нововведения от Microsoft

Доработки, сделанные Microsoft, невелики, но очень полезны:

Так, в SQL Server 6.5 в процедуре или триггере можно было создать курсор (в данном случае речь идет о курсоре, живущем только на сервере и используемом для внутренних нужд) для перебора набора записей, но курсор становился глобальной переменной, и если эта же процедура или триггер вызывалась рекурсивно, происходила ошибка выполнения. В версии 7 в SQL Server добавлена возможность создавать не только глобальные, но и локальные курсоры, а также передавать и возвращать локальный курсор в качестве параметров хранимой процедуры. Появился тип данных "курсор".

Идентификаторы теперь могут достигать длины 128 символов (до 7-й версии их длина не могла превышать 30 символов).

В операторе SELECT команда TOP теперь может использовать необязательный параметр PERCENT. Это позволяет получать не только фиксированное число строк, но и некоторое количество строк, составляющее определенный процент от общего количества строк в resultset'е.

Максимальная длина для binary, varbinary, char и varchar теперь составляет 8000 байт, что позволяет во многих случаях обходиться без BLOB полей.

Появились текстовые типы данных, хранящие символы в Unicode-формате: nchar, nvarchar и ntext.

Добавлен новый тип данных uniqueidentifier, позволяющий хранить в БД GUID - глобально уникальные идентификаторы. Для работы с новым типом данных добавлены несколько новых функций.

Основные конструкции языка

Как и любой нормальный процедурный язык, T-SQL поддерживает стандартные конструкции: If else, while, begin end, и т.п. Это, конечно, не современный объектно-ориентированный язык, но для встроенного языка очень неплохо.

Рис. 5 Таблица tmr

Вот так выглядит наш тестовый код, заполняющий таблицу "tmr" миллионом записей (основные операторы выделены жирным): 

-- Создаем таблицу.
CREATE TABLE tmr (
       f_int1               int NOT NULL,
       f_int2               int NULL,
       f_vchar1             varchar(250) NULL,
       f_dec1               decimal(12,3) NULL,
       f_float1             float NULL,
       f_Date1              datetime NULL,
       PRIMARY KEY CLUSTERED (f_int1)
)
go
-- Выключаем подсчет и вывод данных о количестве произведенных операций.
SET NOCOUNT ON
-- Объявляем переменные. 
 declare @Counter int, @End int, @CurrentDate datetime, 
              @f_int1 int, @f_int2 int, @f_vchar1 varchar(100), @f_dec1 float, 
        @f_float1 float, @f_Date1 datetime
-- Инициализируем переменные.
-- Присвоение значений переменным можно производить как с 
-- помощью оператора SET, так и с помощью SELECT. 
 set @CurrentDate = GetDate() -- Необходимо для подсчета времени выполнения
 select @Counter = count(*) from tmr
 set @End = @Counter + 1000000
 set @f_int1 = @Counter
 -- Выводим общение о начале работы процедуры.
 select Convert(varchar(50), @CurrentDate) + ' - начало закачки ' 
        + Convert(varchar(50), @End - @Counter) + ' записей'
-- Основной цикл
 while(@Counter < @End)
 begin
   -- Заполняем локальные переменные случайными значениями.
   set @f_int1 = @Counter
   set @f_int2 = 100000 * RAND()
   set @f_vchar1 = Convert(varchar(50), @Counter) + ' test'
   select @f_int1 = @Counter, @f_int2 = 100000 * RAND(), 
          @f_vchar1 = Convert(varchar(255), @Counter) 
                      + ' test', @f_dec1 = 100000 * RAND(), 
          @f_float1 = 100000 * RAND(), @f_Date1 = @CurrentDate + 10 * RAND()
   -- Добавляем строку.
   insert into tmr( f_int1,  f_int2,  f_vchar1,  f_dec1,  f_float1,  f_Date1)
            values (@f_int1, @f_int2, @f_vchar1, @f_dec1, @f_float1, @f_Date1)

   set @Counter = @Counter + 1
   -- Через каждые 10000 записей выводить информацию 
   -- о количестве добавленных записей
   if ((@Counter % 10000) = 0) select @Counter
 end
 select Convert(varchar(50), @CurrentDate) + ' - конец закачки '
----------------------------------------------------------------
-- Выводим информации о времени выполнения
 DECLARE @DateEnd datetime
 set @DateEnd = GetDate()
 select 'общее время = ' 
   + Convert(varchar(50), Convert(float, DATEDIFF(ms, @CurrentDate, @DateEnd)) / 1000)
   + ' в секундах'
 SET NOCOUNT OFF
go

Массивы против временных таблиц

При обработке информации часто требуется организовать временный массив (например, для создания сводного отчета). Многие языки программирования гордятся эффективными и удобными реализациями массивов. Это могут быть динамические массивы, списки, специальные классы (например, в MFC есть класс Cmap, реализующий идеологию хэш-индекса), и т.п. Но не о многих языках можно сказать, что реализованные в них массивы "интеллектуальны". Так вот, T-SQL вообще не поддерживает массивы ... ну по крайней мере, в прямом смысле этого слова. Вместо этого в нем есть так называемые "временные таблицы". временная таблица - в прямом смысле этого слова таблица, но создается она в специальной базе данных "TempDB" и по возможности держится в оперативной памяти, не скидываясь на диск. Второе ее отличие заключается в том, что временная таблица автоматически уничтожается, если она больше никому не нужна. временные таблицы бывают двух видов: локальные и глобальные. Отличительной особенностью локальных временных таблиц является префикс #, а глобальных ##. Локальные временные таблицы могут создаваться одновременно несколькими пользователями (точнее, сессиями), и каждый пользователь (сессия) будет иметь свою копию этой таблицы. Глобальные же напротив, являются доступными всем одновременно. Создать временную таблицу можно как традиционным способом, с помощью оператора CREATE TABLE или просто оператором SELECT с утверждением INTO (SELECT * FROM Tbl_1 INTO #Tmp_tbl). Конфликты имен решаются автоматически. На временной таблице можно создавать индексы, в том числе и кластерные. Все созданные индексы уничтожаются автоматически при уничтожении таблицы.

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

Прекрасным примером использования временных таблиц является создание отчета, данные которого получаются несколькими запросами, и должны быть объединены в одну сводную таблицу.

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

Полнотекстовый поиск

Введенная в MS SQL Server 7.0 поддержка полнотекстовых запросов предоставляет возможность расширенного поиска по колонкам, содержащим символьные строки. Индексировать можно колонки как традиционных символьных типов данных (CHAR, VARCHAR), так и колонки имеющие типы text, ntext. Это позволяет создавать на базе MS SQL Server 7.0 поисковые системы, системы каталогизации документов и т.п.

Такая возможность реализуется сервисом MS Search.

MS Search является внешним по отношению к MS SQL Server сервисом. Он исполняет следующие роли:

Полнотекстовый поиск осуществляется довольно-таки быстро, чего нельзя сказать о заполнении полнотекстовых индексов. Нам показалось, что эта операция занимает слишком много времени. Возможно, это связано с межпроцессным обменом (ведь MS SQL Server и MS Search - это разные исполняемые модули). К сожалению, пополнение каталога не может производиться при каждом добавлении строки. Есть две возможности заполнения полнотекстовых индексов: инкрементальное заполнение и полное заполнение (настраивает индексы только для добавленных, измененных или удаленных после последнего заполнения строк. Для такого индексирования таблица должна содержать колонку с типом данных timestamp. В противном случае может выполняться только полное заполнение).

Полнотекстовые конструкции используют предикаты CONTAINS или FREETEXT, либо функции CONTAINSTABLE или FREETEXTTABLE.

К сожалению, в отличие от самого SQL Server, MS Search по умолчанию не поддерживает русский язык. Причем FREETEXT и FREETEXTTABLE вообще невозможно заставить понимать по-русски без использования программного обеспечения третьих фирм. А CONTAINS и CONTAINSTABLE все же можно заставить работать с русским языком. Для этого необходимо выполнить следующий скрипт:

EXEC sp_configure 'language neutral full-text', 1
go
RECONFIGURE
go

После этого надо пересоздать имеющиеся полнотекстовые каталоги. Это можно сделать посредствам Enterprise Manager. Чтобы получить данные, используя предикат CONTAINS, необходимо написать примерно такой запрос.

select * from table1 where CONTAINS( name, ' "иванов*" ' ) 

Звездочка означает, что вы хотите получить все строки, в которых имеются слова, начинающиеся на иванов (например - иванов, иванова, ивановы...). Обратите внимание на то, что иванов* взято в кавычки. Если этого не сделать, MS SQL Server воспримет звездочку как разделитель и возвратит только иванов.

В запросах можно использовать как простые условия так и полнотекстовые предикаты.

Следопыт приходит на помощь

Российской компанией Медиалингва в тесном сотрудничестве с Microsoft создан пакет русификации для полнотекстовой системы поиска MS SQL Server. Ему дали название "Следопыт для MS SQL Server 7.0". После установки этого пакета становятся доступны все возможности полнотекстового поиска, которые ранее были доступны только для английского языка. Так, становится доступным полнотекстовый поиск с использованием предикатов FREETEXT и FREETEXTTABLE. Это позволяет значительно упростить поиск за счет того, что MS Search начинает распознавать словоформы. С использованием Следопыта наш пример можно записать так:

select * from table1 where FREETEXT( name, 'иванов')

Использование предиката FREETEXT позволяет получить некоторые расширенные функции типа указания весомости слова или словосочетания в запросе.

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

Характеристики

 

Макс. Размеры/количества

Объект

SQL Server 6.5

SQL Server 7.0

Размер пакета (Batch size) 128 KB 65,536* размеров сетевого пакета
Байт в short string column 255 8000
Байт в колонках text, ntext или image 2 GB-2 2 GB-2
Байт в GROUP BY, ORDER BY 900 8060
Байт в индексе 900 900
Байт во вторичном ключе 900 900
Байт в первичном ключе 900 900
Байт в строке 1962 8060
Байт в исходном тексте хранимой процедуры 65025 Не больше размера пакета или 250 MB
Кластерных индексов на таблицу 1 1
Колонок в GROUP BY, ORDER BY 16 Ограничено лишь числом байтов
Колонок или выражений в GROUP BY WITH CUBE или WITH ROLLUP 10 10
Колонок на индекс 16 16
Колонок на вторичный ключ (foreign key) 16 16
Колонок на первичный ключ 16 16
Колонок в базовой таблице 250 1024
Колонок в операторе SELECT 4096 4096
Колонок в операторе INSERT 250 1024
Подключений на клиента Максимальное количество сконфигурированных подключений Максимальное количество сконфигурированных подключений
Размер БД 1 TB 1,048,516 TB
Баз данных на сервер 32,767 32,767
Групп файлов в БД N/A 256
Файлов в БД 32 32,767
Размер файла (данные) 32 GB 32 TB
Размер файла (лог) 32 GB 4 TB
Foreign key table references per table 16 253
Длина идентификатора(в знаках) 30 128
Блокировок на соединение Равно числу блокировок на сервер Равно числу блокировок на сервер
Блокировок на сервер 2,147,483,647 2,147,483,647 (статически), 40% памяти SQL Server (динамически)
Вложенных уровней хранимых процедур 16 32
Вложенных подзапросов 16 32
Вложенных уровней триггеров 16 32
Некластерных индексов на таблицу 249 249
Одновременно открытых объектов на сервер* 2 billion 2,147,483,647
Объектов в БД* 2 billion 2,147,483,647
Параметров на хранимую процедуру 255 1024
REFERENCES на таблицу 31 63
Строк на таблицу Ограничено емкостью носителя информации Ограничено емкостью носителя информации
Длина строки SQL (batch size) 128 KB 128* TDS packet size
Таблиц в БД 2 billion Ограничено числом объектов в БД
Таблиц в операторе SELECT 16 256
Триггеров на таблицу 3 Ограничено числом объектов в БД
UNIQUE индексов или ограничений на таблицу 249 249 некластерных и 1 кластерный
* Объекты БД включают все таблицы, views, хранимые процедуры, расширенные хранимые процедуры, триггеры, правила, установки по умолчанию и ограничения. Сумма номеров всех этих объектов не может превышать 2,147,483,647.

MS SQL Server 7.0 показал себя очень добротным и довольно производительным сервером с разумной ценой. Хотя он и дороже двух других участников обзора, вошедших в этот номер журнала, набор его достоинств покрывает эту разницу в цене. Можно отметить несколько недостатков. Один неоспоримый, это отсутствие поддержки платформ, отличных от Windows (9х, NT, 2000) и очень тесная привязанность к другим продуктам Microsoft (хотя можно использовать и другие, например, от Inprise или Sybase). К сожалению, эта стандартная версия перестала работать под управлением Windows NT Workstation, что значительно удорожает ее использование (разумеется, для пользователей легальных версий). Другой - отсутствие возможности ввода новых типов данных и объектных расширений. Достоинством можно считать одну из наиболее простых в использовании и удобных систем русификации - хотя за эту возможность и придется заплатить дополнительно около $700. Более подробное техническое описание MS SQL Server 7.0 можно получить из публикуемой в этом же номере статьи "Архитектура современного SQL-сервера.


Copyright © 1994-2016 ООО "К-Пресс"