Microsoft SQL Server

Microsoft SQL Server — система управления реляционными базами данных (РСУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов — Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка. 

Предыстория (по 1986)
Развитие клиент-серверных технологий во второй половине 80-х было обусловлено развитием двух ключевых направлений, активно разрабатываемых с конца 70-х годов: персональных компьютеров с одной стороны, и компьютерных сетей — с другой. Долгое время СУБД были доступны лишь для мэйнфреймов, и лишь благодаря росту производительности процессоров для домашних компьютеров и мини-ЭВМ разработчики СУБД (как, например, Oracle) начали создавать соответствующие версии своих продуктов. Одной из первых СУРБД для ПК стала Oracle v3, выпущенная в 1983 году. На тот момент немногочисленные владельцы ПК использовали их в основном для разработки приложений и тестирования[1].
Одним из ключевых этапов в развитии СУБД стал 1986 год. К этому времени появилось ещё несколько компаний-разработчиков СУБД, одной из самых заметных из них стала компания Sybase, основанная двумя годами ранее. К 1986 году Sybase начала комплектовать интеллектуальные рабочие станции (как правило, разработки Sun Microsystems или Apollo Computer) с серверами базы данных (разработанных, например, Oracle). При этом сама клиент-серверная технология сделала возможным отделение модулей обработки информации (т. н. back end) от модулей интерфейса (т. н. front end). Учтя постоянный рост проникновения компьютерных сетей, поставщики решений перешли к задачам распределения остальных задач (например, форматирование отчётов, проверка данных и т. д.) среди рабочих станций сети, оставив серверу выполнять лишь задачи, требующие централизованного решения (хранение и защита данных, оптимизация потока выполнения запросов и т. д.)[1].
Существенную роль в переходе от иерархических БД к реляционным сыграли и сами разработчики СУБД. Так, IBM к этому времени уже постепенно переводила своих клиентов с иерархических СУБД (как, например, IMS) на СУРДБ DB2 и SQL/DS. Новые СУБД хотя и уступали в скорости IMS, но превосходили её в легкости программирования и обслуживания. Поставки DB2 быстро превзошли ожидания, захватив значительную долю рынка в первый же год продаж. В сентябре 1986 года Gupta Technologies представила свою разработку SQL Base, заключающую в себе концепт сервера базы данных для ПК, объединённых в сеть. Также Gupta одной из первых реализовала прозрачный доступ к мэйнфреймам IBM с запущенными на них DB2, предоставив прямой доступ к хранившимся там данным без необходимости скачивания файлов или таблиц на рабочую станцию пользователя[1].
К концу 1986 года использование языка SQL в качестве основного для работы с данными в СУБД стало практически повсеместным. IBM, Oracle, Sybase и Gupta использовали схожий синтаксис языка SQL для отправки сообщений от клиентской части СУБД (front end) к серверной (back end), что позволяло сочетать клиентские и серверные части разных производителей. В том же году Американский национальный институт стандартов утвердил версию языка SQL в качестве международного стандарта обработки данных, что поставило под угрозу благополучие СУБД, не обладавших поддержкой языка SQL. Так, например, компания Cullinet хотя и анонсировала поддержку языка SQL в своих СУБД для мини-компьютеров, но из-за задержки в её реализации потеряла свою долю рынка СУБД, уступив IBM и её продукту DB2[1].
Первые шаги (1985—1987)
К этому моменту все имевшиеся у Microsoft разработки были ориентированы исключительно на домашние компьютеры, а её самым прибыльным продуктом являлась операционная система MS-DOS. Клиент-серверная обработка данных на персональных компьютерах к 1986 году только набрала популярность и по этой причине лежала вне интересов компании . Годом ранее, в июне 1985 года, IBM и Microsoft подписали соглашение о совместной разработке (English: Joint Development Agreement, сокр. JDA), содержащее лишь общие положения о будущей кооперации. В августе 1985 года JDA был дополнен документом под кодовым обозначением «Этап II» (English: Phase II), содержавшим в себе планы по разработке OS/2. На тот момент продукт указывался как CP/DOS (English: Control Program/DOS в соответствии с политикой именования продуктов IBM для мэйнфреймов, Microsoft же указывала продукт как DOS 5. В конце 1986 — начале 1987 года проект был официально переименован в OS/2 для придания схожести названия с линейкой компьютеров IBM PS/2[2].
2 апреля 1987 года OS/2 была анонсирована (версия 1.0 согласно пресс-релизу должна была выйти в первом квартале 1988 года, но в конечном итоге была выпущена в декабре 1987 года)[2]. Согласно заявленным в апреле 1987 года планам, IBM планировала добавить функциональность СУБД в OS/2, причём с использованием концепции, разработанной компанией Gupta Technologies, и заключающуюся в отправке персональным компьютером SQL-запросов к хосту через сетевые маршрутизаторы и возврате в качестве ответа лишь результатов выполнения запроса. Несмотря на то, что на протяжении уже нескольких лет разработчики ОС включали некоторые функции СУБД в свои продукты, идея IBM о реализации полноценной СУБД, встроенной в ОС, заставила многих менеджеров пересмотреть свою точку зрения на ПК как подходящую платформу для реализации многопользовательских приложений и концепции клиент-серверной технологии[1].
Вскоре после объявления, IBM анонсировало ещё и специальную, усовершенствованную версию этой ОС — OS/2 Extended Edition. Эта версия должна была комплектоваться с СУБД OS/2 Database Manager и несколькими другими сетевыми и серверными решениями. И хотя Database Manager был более ориентирован на мейнфреймы, а не на персональные компьютеры, тем не менее, на базе их общей разработки IBM могла предложить покупателям более выгодный продукт, нежели конкуренты. Необходимость в собственных разработках в области управления базами данных стала для Microsoft очевидной и весьма актуальной.
Для решения этой проблемы Microsoft обратилась к Sybase, которая на тот момент ещё не выпустила коммерческую версию своего продукта DataServer (это произошло чуть позже, в мае 1987 года и только для рабочих станций Sun под управлением UNIX). Причиной обращения было то, что предрелизная версия DataServer хоть и не была продуктом, рассчитанным на широкое применение, тем не менее за счёт реализации новых идей (клиент-серверной архитектуры, в частности) новая СУБД получила весьма неплохие отзывы. В результате подобного соглашения Microsoft получила бы эксклюзивные права на версию DataServer для OS/2 и всех ОС, разработанных самой Microsoft, а Sybase помимо роялти от Microsoft получила бы доступ к части рынка, занимаемого продуктами Microsoft (в том числе и новой OS/2). Поскольку производительность домашних ПК невысока, то Sybase рассматривала данный сегмент рынка как основу для последующих продаж своего продукта для более производительных систем на базе ОС UNIX, тем более, что Microsoft благодаря своей налаженной сети дистрибьюции могла обеспечить значительно более высокие продажи DataServer, чем сама Sybase. 27 марта 1987 года президент Microsoft  и один из основателей Sybase  (являвшийся на тот момент и президентом компании) подписали договор.
На тот момент львиную долю рынка СУБД для ПК занимала компания Ashton-Tate со своей dBASE. Поскольку DataServer обладал несколько иными возможностями по сравнению с dBASE, то данные продукты в качестве потенциальных конкурентов не рассматривались. Это позволило Microsoft заключить сделку с Ashton-Tate, согласно которой последняя должна была заняться продвижением DataServer среди сообщества пользователей её dBASE.
SQL Server 1.0 (1988—1989)
Разработка
13 января 1988 года в Нью-Йорке состоялась пресс-конференция, на которой было объявлено о союзе Ashton-Tate и Microsoft для разработки нового продукта, получившего название Ashton-Tate/Microsoft SQL Server. В этот же день был выпущен совместный пресс-релиз с анонсом нового продукта, основанного на разработках Sybase. Предварительной датой выхода продукта указывалась вторая половина 1988 года[3]. Что касается ролей компаний в разработке и продвижении продукта, то согласно пресс-релизу Ashton-Tate должна была отвечать за контроль разработки в области баз данных (а также предоставить собственные разработки в этой области), а Microsoft же была отведена аналогичная роль в области технологий для работы в локальных сетях. После выхода SQL Server Ashton-Tate должна была получить лицензию на продукт у Microsoft и заняться розничными продажами по всему миру (как в виде отдельного продукта, так и в комплекте с будущими версиями dBASE), а Microsoft — поставлять продукт для OEM-производителей аппаратного обеспечения[4].
SQL Server уже сразу позиционировался как реляционная СУБД с поддержкой языка SQL и возможностью работы по локальной сети. Кроме того, была заявлена поддержка совместной работы SQL Server с dBASE или любым другим ПО для рабочей станции. Большой упор делался на клиент-серверную архитектуру продукта, благодаря которой должны были разделиться функции клиентского приложения (English: front-end), в котором пользователи будет видеть нужные ему данные, и серверной части (English: back-end) в которой эти данные будут храниться. Также Ashton-Tate и Microsoft заявляли о «трёх главных новшествах в области технологий реляционных баз данных»: поддержка хранимых процедур, компилируемых SQL Server и благодаря которым будет «значительно ускорена» выборка данных, а также поддерживаться целостность данных при работе в многопользовательской среде. Вторым новшеством была заявлена постоянная доступность ядра (не прерывая действий пользователей) для административных задач, таких как создание резервных копий данных (бэкап) и их восстановлений. Третьим новшеством была заявлена поддержка технологии, выполняющей роль моста между системами обработки онлайн-транзакций и базами данных на ПК. Сам же SQL Server должен был быть основан на архитектуре «открытой платформы», что дало бы возможность сторонним разработчикам ПО создавать прикладные программы, использующие сетевые и многопользовательские возможности SQL Server. При этом Билл Гейтс, на тот момент являвшийся председателем совета директоров Microsoft, назвал сеть «самой важной вычислительной платформой для новых и инновационных прикладных программ». Запускаться SQL Server должен был на любых сетевых серверах на базе OS/2, включая Microsoft OS/2 LAN Manaqer и IBM LAN Server, а взаимодействовать должен был с рабочими станциями под управлением OS/2, PC-DOS или MS-DOS[4].
Ashton-Tate рассматривала SQL Server как возможность завоевания рынка СУБД для домашних компьютеров, не отказываясь при этом от дальнейшего развития dBASE. При этом оба продукта должны были предлагаться и корпоративным заказчикам. Microsoft рассчитывала на продвижение SQL Server как основу транзакционно-ориентированных систем, включая различные системы учёта, библиотеки документов, системы управления исследованиями и другие. Для продвижения нового продукта обеими компаниями был намечен ряд различных семинаров и конференций, первой из которых стала конференция Microsoft Advanced Network Development Conference, назначенная на 30 марта-1 апреля в Сан-Франциско и 13-15 апреля в Нью-Йорке[4].

Sybase же, несмотря на то, что её название в наименовании нового продукта не фигурировало, являлась по сути главным разработчиком из всей троицы компаний. Вклад же Microsoft, напротив, был весьма невелик. В Sybase уже была сформирована небольшая команда, задачей которой было портирование движка DataServer на OS/2, а также перенос клиентского интерфейса DB-Library на MS-DOS и OS/2. Microsoft же отвечала за тестирование и проект-менеджмент, а также разработала несколько дополнительных утилит, облегчавших установку и администрирование SQL Server 1.0.
Новый продукт задумывался как порт Sybase DataServer на OS/2, продажами которого должны были заняться как Microsoft, так и Ashton-Tate. Параллельно разрабатываемая Ashton-Tate новая версия dBASE IV также должны была быть доступной в серверном варианте, что позволило бы использовать язык и средства разработки dBASE IV для создания клиентских приложений, способных работать с новым SQL Server. Новая клиент-серверная модель должна была дать возможность dBASE выйти на новый уровень производительности, предоставив возможность работать с данными гораздо большему количеству пользователей, чем это могла позволить распространённая на тот момент модель работы с общими файлами.
Бета-версии
Бета-версия Ashton-Tate/Microsoft SQL Server была выпущена 31 октября 1988 года в составе набора инструментов для сетевой разработки SQL Server Network Developer’s Kit (сокр. MDK). Данный набор содержал предрелизную версию SQL Server, документацию, программные библиотеки прикладного интерфейса для SQL Server, а также . Программные библиотеки были предназначены для компиляции (компилятором языка Си от самой Microsoft) MS-DOS-, Windows- или OS/2-приложений, предназначенных для работы с SQL Server по локальной сети. Набор продавался исключительно для разработки ПО, но при этом к нему прилагался специальный купон, позволявший покупателям обновить версию SQL Server до полноценной после её выхода[5].
MDK продавался напрямую Ashton-Tate на территории США и Канады (а также Microsoft на территории США) по сниженной цене. Microsoft при этом предлагала существенную скидку разработчикам, которые уже приобрели набор инструментов Microsoft OS/2 Software Developer’s Kit или посетили одну из конференций Microsoft Advanced Network Development Conference. В свою очередь, Ashton-Tate также предлагала аналогичную скидку разработчикам, посетившим в 1988 году конференцию Ashton-Tate Developer’s Conference[5].
MDK обладал большим количеством ошибок и недостатков, тем не менее он работал на домашних компьютерах (с процессором, например, Intel 80286 с частотой 10МГц, 6 Мб оперативной памяти и жёстким диском объёмом 50 Мб).
Выход
29 апреля 1989 года началась официальная продажа Ashton-Tate/Microsoft SQL Server 1.0. Члены команды, занимавшейся SQL Server, на специальном мероприятии по сертификации команд, проходившем в Торрансе, надели майки с надписью «Ashton-Tate SQL Server: сделал вовремя и горжусь этим» (English: Ashton-Tate SQL Server: On-Time and Proud of it)[3].
Тесты журнала Infoworld показывали, что Ashton-Tate/Microsoft SQL Server 1.0 даже при работе в сети с 24 рабочими станциями справлялся с нагрузкой быстрее, чем обычная база данных с многопользовательским режимом (наиболее распространённый тип БД на тот момент), а при использовании хранимых процедур удавалось достичь скорости отклика менее двух секунд. Также журналисты отмечали лёгкость и удобство написания тестового кода.
Профильная пресса отзывалась достаточно положительно о новом продукте, тем не менее продажи были весьма невысокими. Кроме того, разочаровывали и продажи OS/2, поскольку многие пользователи не пожелали переходить с MS-DOS на OS/2. Картину довершала возможность создавать приложения для SQL Server лишь на языке Си, поскольку выход обещанного dBASE IV Server Edition от Ashton-Tate был отложен, и аналогичная ситуация была и со сторонними разработчиками инструментов для SQL Server. Кроме того, свою роль сыграла и конкуренция: на рынке СУБД для ПК-платформ к этому времени уже существовали XDB от компании XDB, SQLBase от Gupta Technologies и OS/2 Extended Edition (в однопользовательском режиме) от IBM[3].
К 1990 году ситуация лучше не стала. Планы по совместному продвижению продукта, в результате чего SQL Server должен был завоевать позиции в большом сообществе dBASE-разработчиков, провалились. Несмотря на перенос сроков выхода десктопной версии dBASE IV (вышла в 1989 году), она всё же содержала большое количество ошибок, благодаря чему заслужила дурную репутацию. Серверная версия (Server Edition), которая должна была упростить разработку высокопроизводительных приложений для SQL Server так и не вышла. Разработка приложений в dBASE для SQL Server стала представлять собой проблему, поскольку разработка однопользовательского запись-ориентированного приложения кардинально отличалась от разработки многопользовательских приложений, для которых нужно ещё было решать возникающие проблемы с параллельным выполнением задач, корректной параллельной работой с данными, а также невысокой пропускной способностью тогдашних локальных сетей. Первые попытки соединить инструменты dBASE с SQL Server приводили к неэффективной совместной работе этих продуктов (так, например, построчный запрос данных превращался в проблему, а курсоров с произвольным переходом по строкам тогда ещё не существовало).
В результате, Ashton-Tate, двумя годами ранее занимавшая лидирующие позиции на рынке СУБД для домашних ПК, ныне была вынуждена бороться за своё существование, что в свою очередь вынудило её вновь переключиться на свой основной продукт dBASE. Microsoft же тем временем запустила в продажу OS/2 LAN Manager под собственной торговой маркой (тогда как изначально планировалось лишь поставлять OEM-версии), и ей необходимо было, чтобы SQL Server помог заложить фундамент для разработки клиент-серверных инструментов, способных работать с Microsoft LAN Manager и Microsoft OS/2. Всё это привело к принятию решения о прекращении совместного продвижения SQL Server, после чего данный продукт был немного изменён и представлен уже как Microsoft SQL Server.
SQL Server 1.1 (1990)
Ещё до выхода версии 1.1 официальные представители Microsoft (в отличие от независимых аналитиков) предсказывали резкий рост продаж новой версии продукта, однако их надежды не оправдались. Microsoft SQL Server 1.1 вышел в августе 1990 года как обновление и замена для Ashton-Tate/Microsoft SQL Server 1.0, продававшегося в 1989 году[6]. На момент выхода версии 1.1 Microsoft всё ещё не рассматривала SQL Server как продукт, способный приносить прибыль сам по себе — именно поэтому он являлся лишь одним из приложений к LAN Manager (Microsoft даже начала создавать для партнёров каналы продаж обоих продуктов, хотя ранее никогда не занималась продажами в розницу решений для ЛВС). Положительную роль должен был сыграть скорый выход клиентских приложений (English: front ends) от Borland и , тем более, что в течение года ожидалась ещё несколько подобных решений (на тот момент их условно называли «вторым поколением»). Но при этом, не менее важная часть SQL Server — пакет устанавливаемых протоколов — всё ещё находился в разработке. TCP/IP-версия библиотеки Net-Library, первая из данного пакета, всё ещё находилась на этапе альфа-тестирования, а её DEC-NET- и SPX-версии вообще находились на этапе разработке без каких-либо объявленных сроков выхода. Кроме того, очевидная сложность клиент-серверных вычислений и ещё продолжающаяся эволюция серверных и клиентских приложений привели к тому, что первые продажи SQL Server 1.1 были весьма невысокими[7].
Возможности SQL Server 1.1, в целом, были аналогичны возможностям версии 1.0, но при этом новая версия содержала множество исправлений ошибок, проявлявшихся в версии 1.0. Кроме того, SQL Server 1.1 поддерживал обмен информацией ещё и с новой клиентской платформой — Microsoft Windows 3.0, поставки которой начались в мае 1990 года и вызывали ощутимую реакцию в компьютерной индустрии. SQL Server 1.1 теперь можно было значительно удобнее настраивать для совместной работы с LAN Manager, кроме того была усовершенствована установка продукта для работы с сетями Novell и в качестве отдельной системы разработки ПО. В комплект была включена библиотека Basic Library for SQL Server, представлявшая собой интерфейс между SQL Server и Microsoft Basic Professional Development System. Благодаря этой библиотеке была впервые добавлена поддержка этого языка[6].
Клиентская часть SQL Server 1.1 могла работать с новой версией DB-Library, интерфейса между клиентской частью и SQL Server, которая рассылалась некоторым разработчикам за месяц до выхода новой версии самого SQL Server. Новая версия DB-Library представляла собой практически полностью переписанный вариант предыдущей версии, благодаря чему она стала занимать лишь 40 Кбайт вместо прежних 80 Кб, оставляя больше памяти для DOS-приложений на клиентских системах (теперь разработчик получал 250 Кбайт для своего приложения вместо прежних 50 Кбайт, получаемых при использовании статических библиотек DB-Library, шедших в комплекте с SQL Server 1.0). Архитектура устанавливаемого протокола соединения в DB-Library теперь могла взаимодействовать с клиентами на DOS, Windows и OS/2, а также поддерживала доступ к Sybase SQL Server на других платформах. Впрочем, согласно информации от самих Microsoft и Sybase, эти драйверы всё ещё находились в стадии активной разработки[6].
Лицензирование SQL Server 1.1 предусматривало следующие варианты[6]:
полнофункциональная версия для 5 пользователей (с возможностью дополнительного увеличения числа пользователей до 10);
полнофункциональная версия для неограниченного количества пользователей;
обновление версии для 5 пользователей до версии для неограниченного количества пользователей;
обновление для версии SQL Server 1.0.
Возможность работы с SQL Server 1.1 клиентских систем разных производителей позволило последним продавать Microsoft SQL Server 1.1 наряду с собственными разработками. Первыми членами партнёрской программы SQL Business Partner Program стали Ashton-Tate, Blyth Software, Dataease International, Revelation Technologies и Sybase. Эти компании могли совершать продажи через незадолго до этого сформированную специальную сеть сбыта (English: Microsoft Network Specialist channel), главной задачей которой до этого была продажа Microsoft LAN Manager, либо продавать конечным пользователям напрямую. Из этих пяти партнёров на момент выхода новой версии лишь Ashton-Tate могла предложить пользователям клиентскую часть для SQL Server — SQL Link for Framework III (всего же на рынке на тот момент было доступно около 40 подобных решений). Dataease International заявляла, что её решение Dataease SQL 1.0 станет доступным для покупки с 14 сентября того же года. По информации от Microsoft, оставшиеся два партнёра планировали выпустить свои решения (MS-SQL Server Bond for Advanced Revelation от Revelation Technologies и Omnis 5 от Blyth Software) в третьем квартале того же года. Выпуск Dbase IV 1.1 Server Edition производства Ashton-Tate, который должен был поддерживать и SQL Server, ожидался до конца 1990 года. В первой четверти 1991 года должны были выйти и серверные интерфейсы для поддержки прочих клиентских систем Dbase, а именно Arago Dbxl и Arago Quicksilver производства Wordtech Systems[6].
В третьей четверти 1990 года состоялся выход Access SQL (производства Software Products International) и Q+E (производства Pioneer Software), предназначенные для организации прямой связи между Microsoft Excel и SQL Server[6]. В частности, Q+E предоставлял возможность по сути всем Windows-приложениям (в том числе для версии Windows 3.0), способным работать с соединениями по технологии Dynamic Data Exchange, взаимодействовать и с SQL Server. С точки зрения пользователя, Q+E 2.5 позволял пользователям просматривать, объединять и сортировать информацию в базах данных без написания соответствующих SQL-запросов. А поскольку DDE-вызовы были встроены в само приложение Q+E, то пользователи, например, Excel могли выполнять последующую обработку данных[8].
К началу 1991 года уже несколько десятков сторонних программных продуктов могли работать с SQL Server. Значительную роль в этом сыграла поддержка со стороны SQL Server динамических библиотек, реализованных в Windows 3.0, причём в SQL Server была реализована эта поддержка практически с самого начала продаж Windows 3.0. Благодаря этому Microsoft SQL Server планомерно начал завоевывать позиции лидера среди СУБД, ориентированных на Windows-платформу. Тем не менее, несмотря на улучшение ситуации, всё ещё актуальной оставалась проблема с наличием инструментов, поддерживающих разработку на языках, отличных от Си.
В целом, политика ранней и полной поддержки приложений для Windows 3.0 обусловила и успех Microsoft SQL Server, а кроме того очевидный успех Windows как платформы также потребовал изменений как в SQL Server, так и в самой Microsoft. В частности, команда в Microsoft, занимавшаяся портированием чужого продукта, постепенно перешла к полноценному тестированию и проект-менеджменту, а затем — и к разработке собственных инструментов для облегчения установки и администрирования SQL Server. Но несмотря на то, что вместе с SQL Server 1.1 Microsoft поставляла собственное клиентское ПО и утилиты, программные библиотеки, а также инструменты для администрирования, движок SQL Server по-прежнему писался компанией Sybase, тогда как у Microsoft не было даже доступа к исходному коду. Подобная модель предусматривала, что для выполнения каких-либо запросов на изменение в функционале SQL Server (в том числе и для исправления ошибок) Microsoft должна была направлять эти запросы Sybase, которая и вносила соответствующие изменения. Microsoft же стремилась к созданию полноценной и самостоятельной команды поддержки SQL Server, для чего нанимала на работу инженеров, имевших опыт работы с базами данных. Но, не имея доступа к исходному коду, команда столкнулась с невозможностью решать критичные для клиентов вопросы поддержки продукта. Кроме этого, существовала проблема с зависимостью Microsoft от Sybase в вопросах исправления ошибок в продукте, следствием чего являлась недостаточная скорость исправления Sybase критичных ошибок, заявленных Microsoft.
В начале 1991 года Microsoft и Sybase достигли соглашения, согласно которому первая получала доступ к исходному коду SQL Server, но исключительно в режиме чтения (то есть без возможности вносить изменения). Это соглашение дало возможность команде, занимавшейся поддержкой продукта (т. н. English: SQL Server group), читать код для лучшего понимания логики работы продукта в каких-либо неочевидных ситуациях. Помимо этого, Microsoft, воспользовавшись удобным случаем, собрала небольшую команду разработчиков, которые занялись изучением исходного кода SQL Server. Эта группа занималась построчным исследованием кода в тех частях программы, где было подозрение на наличие ошибки, и делала «виртуальные исправления ошибок» (поскольку возможности вносить изменения в код SQL Server у них по-прежнему не было). Однако, когда подобные отчеты с разбором исходного кода стали направляться в Sybase, то исправление критичных для Microsoft ошибок, стало происходить существенно быстрее. Спустя несколько месяцев в подобном режиме работы, в середине 1991 года Microsoft наконец-то получила возможность исправлять ошибки напрямую в коде. Но поскольку исходный код продукта по-прежнему контролировала Sybase, то все изменения в коде предварительно отправлялись ей на проверку. В итоге, разработчики Microsoft стали экспертами по коду SQL Server, что позволило с одной стороны улучшить его поддержку, а с другой — больше внимания уделять его качеству.
SQL Server 1.11 (1991)

В 1991 году Microsoft выпустила промежуточную версию — SQL Server 1.11. Данный выпуск был обусловлен тем, что список пользователей к тому моменту уже значительно расширился. Несмотря на то, что клиент-серверная архитектура по-прежнему не была широко распространенной, клиенты всё же постепенно переходили на неё. Но, несмотря на положительную критику от профильной прессы, продажи SQL Server по-прежнему оставляли желать лучшего. По большей части это было связано с провалом OS/2. Пользователи домашних ПК вместо ожидаемого перехода с MS-DOS на OS/2 предпочитали переходить на Windows 3.0. Как следствие, продажи Windows 3.0 были весьма высоки. Чтобы подстегнуть продажи SQL Server и LAN Manager Microsoft объявила о начале специальной программы поддержки независимых производителей ПО, в рамках которой каждый разработчик, удовлетворяющий определённым требованиям, мог лицензировать урезанные версии этих продуктов (эти версии позволяли лишь функционировать стороннему ПО, т. н. English: run-time versions) с 40 % скидкой и при этом получить полгода бесплатной поддержки, а также некоторые другие преимущества[9].
Как писал журнал InfoWorld в конце июля 1991 года, Microsoft при анонсе новой версии SQL Server делала упор на улучшенную работу с сетью и новое Windows-приложение для администрирования БД. В частности, Microsoft обещала в течение года предоставить копию утилиты SQL Commander для зарегистрированных пользователей SQL Server для OS/2. Инструмент под названием SQL Commander был представлен ранее, в мае 1990 года компанией Datura Corp. (ранее известной как Strategic Technologies Group). Данная утилита упрощала администраторам БД управление аккаунтами пользователей, индексами таблиц, триггерами и сложными запросами. Однако, как отмечали критики, данный инструмент практически полностью совпадал по функциональности с другой утилитой от Microsoft — Server Administration Facility tool, поставлявшейся в комплекте с SQL Server. Кроме того, в SQL Server 1.11 была добавлена поддержка инструментов для администрирования сетей Novell, новейший на тот момент инструмент OS/2 Requester 1.3 и детальная техническая документация для пользователей продукции Novell. Улучшение работы с сетью включало в себя улучшение работы с сетями фирмы Novell, добавленную поддержку протоколов  4.10, а также клиентское взаимодействие с Sybase SQL Server на UNIX- или VMS-машинах. Изменения затронули и лицензионную политику: версия для 5 пользователей была заменена на десятипользовательскую версию, а пользователи SQL Server 1.1 с неограниченным количеством пользователей могли получить версию 1.11 бесплатно[10].
Но с другой стороны, SQL Server 1.11 обладал весьма ощутимыми ограничениями, в том числе и масштабируемости. Это был 16-битный продукт, поскольку OS/2 поддерживала лишь 16-битное адресное пространство для приложений, а его производительность была ограничена отсутствием механизмов высокой производительности в самой OS/2, как например, асинхроного ввода-вывода. Несмотря на то, что SQL Server на OS/2 на тот момент мог справиться с большинством задач, тем не менее существовал некий предел, после которого сервер просто начинал «захлёбываться». Чётко установленной границы не существовало, но SQL Server на OS/2 использовался для рабочих групп, численностью до 50 человек. Для более крупных групп существовала версия Sybase SQL Server для высокопроизводительных систем на базе ОС UNIX или VMS. И вот здесь как раз и проходила граница продаж между Microsoft и Sybase. Клиенты, выбирающие продукт от Microsoft хотели быть уверены, что их запросы не «перерастут» его. Большое число программных инструментов, разработанных для Microsoft SQL Server, работали без серьёзных доработок с Sybase SQL Server, а приложения, запросы которых уже не могли быть удовлетворены OS/2, легко могли быть перенесены на более мощную UNIX-систему. Подобная взаимосвязь была выгодна обеим компаниям, поскольку большое число программных инструментов для Microsoft SQL Server как правило без проблем работало и с Sybase SQL Server, а приложения, которым производительности OS/2 уже было недостаточно, легко работали и с UNIX-серверами.
SQL Server 4.2 (1991—1992)
Тем временем конкуренция на рынке СУБД постепенно росла, равно как и требования клиентов к выбираемому ими ПО, результатом чего при разработке следующей версии SQL Server для Microsoft на первый план вышли вопросы совместимости и взаимодействия, а также необходимость реализации новой функциональности, дабы удовлетворить запросы клиентов. Поскольку новая версия продукта нужна была как можно быстрее, то Microsoft вскоре после выхода версии SQL Server 1.11 приступила к разработке следующей версии.
Однако возник вопрос о следующем номере новой версии. Дело в том, что параллельно с продажами Microsoft SQL Server 1.0 велись продажи и Sybase SQL Server 3.0, который привнес некоторые весьма используемые механизмы на рынок СУБД для ПК, как например, типы данных text и image, а также режим просмотра данных (English: browse mode). И следующей версией Sybase SQL Server стала версия 4.0 для наиболее распространённых платформ, и версия 4.2 — для менее распространённых. Таким образом, разработка новой версии Microsoft SQL Server фактически велась на базе исходного кода Sybase SQL Server 4.2. Соответственно, для маркетинговых целей новая версия Microsoft SQL Server также получила номер 4.2.
Однако, ещё в мае 1991 года Microsoft и IBM объявили о прекращении совместной разработки OS/2, поскольку к тому времени уже стало очевидным, что пользователи предпочитали Windows, а не OS/2. Таким образом, Microsoft решила сосредоточиться на дальнейшем развитии Windows, равно как и на ПО для них. К этому времени Microsoft уже вела разработку новой версии ОС на базе микроядра под кодовым названием NT (сокр. от English: new technology — «новая технология»). Изначально предполагалось, что это будет новая версия OS/2 (иногда даже упоминалась как OS/2 3.0). После прекращения совместной разработки проект было решено переориентировать на Windows, то есть добавить пользовательский интерфейс в стиле Windows и программный интерфейс Win32 API, в результате чего проект получил новое название — Microsoft Windows NT.
Согласно имевшимся на тот момент планам, первая версия Windows NT должна была выйти не ранее чем через 2 года, а Microsoft SQL Server в конечном счёте должен был быть перенесён на Windows NT, что выглядело как не самый разумный ход. Однако, при всём при этом Microsoft приходилось поддерживать и разработку SQL Server для OS/2, при том, что OS/2 теперь была по сути конкурентным продуктом для самой же Microsoft. Microsoft же пошла на это, поскольку альтернативы у неё на тот момент не было.
Microsoft разрабатывала SQL Server 4.2 для грядущей OS/2 2.0, первой 32-битной версии OS/2. Поскольку SQL Server 4.2 должен был стать 32-битным, то его портирование с линейки для UNIX представлялось более простым, поскольку в этом случае проблема с сегментацией памяти не была насущной. Теоретически, 32-битный SQL Server должен был стать и более производительным. В прессе появлялось множество статей, посвящённых сравнению производительности на 16- и 32-битных платформах, и практически все авторы были уверены, что переход на 32-битность даст существенный прирост производительности (хотя в некоторых статьях и приводилось уточнение, при каких условиях это будет (или не будет) именно так). В качестве главного источника прироста производительности рассматривалась адресация памяти. Для её выполнения в 16-битном сегментированном адресном пространстве OS/2 линейки 1.x требовались как минимум 2 инструкции: первая инструкция загружала нужный сегмент памяти, вторая — загружала нужный адрес в данном сегменте. При 32-битной адресации отпадала необходимость в инструкции для загрузки сегмента, и таким образом память могла адресоваться лишь одной инструкцией. Согласно некоторым расчётам, благодаря этому потенциальный общий прирост производительности мог составить до 20 %.
На тот момент множество людей ошибочно полагало, что SQL Server должен быть запущен на полноценной 32-битной платформе, чтобы иметь возможность адресовать более 16 Мб памяти. Будучи запущенным на OS/2 1.x, приложение получало доступ лишь к 16 Мб реальной памяти. И хотя там была возможность получить более 16 Мб виртуальной памяти, но тогда начинала оказывать своё негативное влияние подкачка страниц. В OS/2 2.0 приложение могло адресовать более 16 Мб памяти и при этом избежать её подкачки. В свою очередь, это позволяло SQL Server иметь большой кэш и получать все необходимые данные из памяти быстрее, чем с диска, что очень положительно влияло на прирост производительности. Однако, с точки зрения приложений, вся память в OS/2 была виртуальной (как в версии 1.х, так и в 2.х), поэтому даже 16-битная версия SQL Server могла воспользоваться преимуществами OS/2 2.0 для получения доступа к большему пространству реальной памяти. С этой точки зрения 32-битная версия была просто не нужна.
Однако, как оказалось, первые бета-версии OS/2 2.0 были значительно медленнее OS/2 1.x, сводя на нет все преимущества нового подхода к адресации памяти. В результате, пользователи вместо ожидаемого прироста производительности наблюдали её серьёзное падение при запуске первых сборок 32-битного SQL Server 4.2 на OS/2 2.0 (по сравнению с SQL Server 1.1).
Неожиданно, планы по выходу OS/2 2.0 к концу 1991 года подверглись пересмотру. Фактически, стало непонятно, будет ли IBM вообще заниматься выпуском версии 2.0. То есть, выхода OS/2 2.0 ранее конца 1992 года ждать не приходилось. В виду этой ситуации, Microsoft вынуждена была вернуться к 16-битной реализации SQL Server и перенацелить её на OS/2 1.3. На возврат обратно к 16-битной реализации разработчикам из Microsoft потребовалось около трёх месяцев, но тут возникла другая проблема: поставляемая IBM версия OS/2 1.3 работала только на её лицензионных компьютерах. Теоретически, сторонние производители ПК могли лицензировать OS/2 у Microsoft и поставлять её как часть OEM-соглашения. Однако спрос на OS/2 упал настолько, что большинство OEM-производителей предпочли не связываться с ней, в результате чего покупка OS/2 для сторонних ПК превратилась в проблему. В качестве временного решения проблемы Microsoft создала урезанную версию OS/2 версии 1.3 (кодовое название Tiger), которая поставлялась в одной коробке с Microsoft SQL Server и Microsoft LAN Manager. При этом всё очевиднее становился тот факт, что OS/2 — это уже «мёртвая» ОС.
Бета-тест Microsoft SQL Server 4.2 начался осенью 1991 года, а в январе 1992 года на Сан-Францисской конференции для разработчиков ПО, использующих Microsoft SQL Server, Билл Гейтс, тогдашний глава (CEO) Microsoft, и Боб Эпстейн, основатель и руководитель Sybase, официально анонсировали продукт. Версия 4.2 стала первой поистине совместно разработанной версией. Движок, работающий с БД, был портирован из исходного кода версии 4.2 для UNIX, причём над портированием и исправлением ошибок инженеры Microsoft и Sybase работали совместно. Более того, Microsoft создала библиотеки клиентского интерфейса для MS-DOS, Windows и OS/2, а также впервые в комплект поставки вошёл инструмент с графическим интерфейсом Windows для упрощения администрирования. Исходный код объединялся в штаб-квартире Sybase, а файлы исходного кода пересылались туда по модемной связи или через копирование и отправку магнитных лент.
Поставки Microsoft SQL Server 4.2 начались в марте 1992 года. Критика в профильной прессе была довольно благосклонной, равно как и отзывы покупателей продукта. Тем не менее, после начала поставок в 1992 году многие задавались вопросом о сроках выхода 32-битной версии SQL Server. Как показали дальнейшие события, данная версия движка стала последней версией, полученной Microsoft от Sybase (не считая нескольких исправлений ошибок, которыми компании ещё некоторое время продолжали обмениваться).
SQL Server for Windows NT (1992—1993)
В начале 1992 года команда разработчиков SQL Server оказалась на распутье. С одной стороны, уже имелась клиентская база SQL Server, у которых СУБД была установлена на OS/2. Эти клиенты уже ждали 32-битную версию SQL Server, причём версию для OS/2 2.0 и желательно сразу после её выпуска OS/2 2.0 корпорацией IBM, то есть они желали оставаться на OS/2 в обозримом будущем. Но проблема была в том, что не было точно известно, когда же выйдет OS/2 2.0. Представители IBM заявляли, что выпуск новой версии состоится осенью 1992 года. Многие воспринимали эти слова со скепсисом. Так например, Стив Баллмер, старший вице-президент Microsoft, публично поклялся, что он съест флоппи-диск, если IBM выпустит свой продукт в 1992 году.
С другой стороны, от разработчиков SQL Server требовали скорейшего переноса их продукта на Windows NT, причём желательно так, чтобы бета-версии обоих продуктов вышли примерно в одно время. Windows NT на тот момент рассматривалась как продукт Microsoft верхнего ценового диапазона, а с точки зрения разработчиков эта ОС обладала ещё и несколькими техническими преимуществами по сравнению с OS/2: асинхронный ввод-вывод, симметричная многопоточность, переносимость на RISC-архитектуру.
Кроме того, хотя Microsoft и решила в 1991 году вернуться к 16-битной версии SQL Server, но при этом работа над 32-битной версией не прекращалась. К марту 1992 года, когда только вышла версия 4.2, тесты показывали, что обе версии (и 16-битная и 32-битная) на бета-версиях OS/2 2.0 работают медленнее по сравнению с 16-битной версией, запущенной на OS/2 1.3. Возможно, после официального выхода OS/2 2.0 ситуация и изменилась бы, но имевшиеся на тот момент бета-версии указывали скорее на обратное. По факту работа получалась менее производительной и менее стабильной.
Поскольку ресурсы для разработки были ограниченными, то в текущей ситуации Microsoft не могла позволить себе заниматься разработкой под обе платформы сразу. В противном случае разработчики столкнулись бы ещё с дополнительным ворохом проблем, а именно им пришлось бы добавлять в продукт абстрактный слой, который скрыл бы различия между операционными системами либо вести параллельную разработку двух версий продукта. Таким образом, разработчики в Microsoft приняли решение прекратить работу над 32-битной версией SQL Server для OS/2 2.0, вместо этого они вплотную занялись разработкой продукта для Windows NT. При разработке новой версии внимания переносимости SQL Server на OS/2 или другие ОС не уделялось, вместо этого решено было воспользоваться всеми преимуществами Windows NT. Соответственно, подобный подход фактически положил конец разработке SQL Server для OS/2 вообще, за исключением поддержки уже выпущенных версий и исправления в них ошибок. Microsoft же начала информировать своих клиентов о том, что появление будущих версии (в том числе 32-битной версии) SQL Server для OS/2 2.0 будет зависеть от наличия и объёма спроса покупателей, тогда как она сама переориентировалась на Windows NT. Восприятие клиентами подобной новости было различным: некоторые отнеслись с пониманием к подобной позиции, другим, чей бизнес напрямую зависел от OS/2, такая новость не понравилась.
Тем временем, Sybase так же работала над новой версией своей СУБД, которая должна была получить название System 10. В данной ситуации, как и в случае с разработкой версии 4.2, разработчикам нужно было чтобы новая версия Microsoft SQL Server была совместима с System 10 и имела тот же порядковый номер, что и продукт Sybase, выпущенный для UNIX. Таким образом, сложилась ситуация когда для Microsoft главной целью стала победа Windows NT над OS/2, а для Sybase — успех её System 10.
Несмотря на то, что System 10 ещё не была даже переведена на этап бета-тестирования, уже имелись расхождения в планировании обеими компаниями выпуска новых версий продукта. Так, например, Microsoft желала как можно скорее портировать Microsoft SQL Server на Windows NT, равно как и получить версию System 10 для Windows NT, OS/2 2.0 или обеих сразу. В результате было достигнуто соглашение о том, что Microsoft портирует SQL Server 4.2 для OS/2 на Windows NT, причём начнёт это незамедлительно, а Sybase включит Windows NT в список приоритетных ОС для System 10. Таким образом, Windows NT станет одной из первых ОС, для которых будет выпущена соответствующая версия System 10. В свою очередь, Microsoft возобновит поддержку OS/2 для Sybase, так чтобы клиенты, желающие остаться на OS/2 вполне могли это сделать. Хотя Microsoft и надеялась, что большинство клиентов мигрирует на Windows NT, но было ясно, что на все 100 % этого не произойдёт. Поэтому в этом отношении подобная договорённость была даже выгодна Microsoft.
Кроме того, подобный план действий имел дополнительные преимущества с точки зрения разработки. Команда разработчиков Microsoft должна была работать над стабильной и проверенной версией 4.2, в которой они к тому времени уже превосходно разбирались, что сильно облегчало задачу её переноса на новую ОС. Sybase же в свою очередь могла полностью сконцентрироваться на разработке новой версии, не беспокоясь о проблемах, связанных с предварительными версиями ОС. В итоге, согласно имевшемуся на тот момент (1992 год) плану должны были выйти обе версии (System 10 и SQL Server для Windows NT), а компании продолжить совместную разработку продукта.
Команда в Microsoft, занимавшаяся разработкой SQL Server, приступила к ускоренной разработке первой версии SQL Server для Windows NT, поскольку команда должна была выпустить продукт в течение 90 дней после выхода Windows NT, но согласно поставленным планам они должны были уложиться в 30 дней. Тут расчёт был на то, что Windows NT теперь фактически являлась единственной платформой для SQL Server, а значит разработчикам не было нужды беспокоиться о проблемах, связанных с портированием, и в частности не нужно было заниматься разработкой абстрактного слоя для сокрытия различий операционных систем. Роль абстрактного слоя должна была сыграть сама Windows NT, которая изначально планировалась как портируемая ОС, то есть предполагалось выпустить её версии для различных машинных архитектур.
Как следствие, разработчики сделали плотную привязку функциональности SQL Server к функциональности Windows NT, например, обработку событий в едином месте, установку SQL Server в качестве службы Windows NT, экспорт статистики производительности СУБД в Windows NT Performance Monitor и т. д. Так как Windows NT предусматривала возможность запуска приложениями динамического кода (при помощи динамических библиотек), то для SQL Server была предусмотрена возможность создавать сторонними разработчиками собственные динамические библиотеки. В результате подобных изменений Microsoft SQL Server для Windows NT сильно стал отличаться от исходной версии 4.2 для OS/2, так как оказалось, что Microsoft фактически переписала ядро SQL Server (часть программы, отвечающей за взаимодействие с ОС) для работы с Win32 API напрямую.
Ещё одной задачей при разработке SQL Server для Windows NT было облегчение перехода с имеющихся установок на OS/2 на новую версию SQL Server и ОС. Разработчики желали, чтобы все приложения, написанные для SQL Server 4.2 для OS/2 смогли работать без изменений на SQL Server для Windows NT. Поскольку для Windows NT планировалась возможность двойной загрузки с MS-DOS или OS/2, то команда решила, что SQL Server для Windows NT должен обладать способностью напрямую читать и писать в базы данных, созданные в SQL Server для OS/2. Для достижения поставленных целей разработчики переработали внутреннюю архитектуру SQL Server, добавив при этом множество функций для администрирования, работы по сети и расширяемости, тогда как от добавления внешних функций в ядро движка пришлось отказаться. Также задачей стала совместимость диалектов языка SQL и возможностей версий СУБД для Windows NT и OS/2, тогда как новые возможности предполгалось добавить в версию, которая была бы разработана на основе System 10. Для разграничения совместимости с версией 4.2 для OS/2 и новыми разработками Sybase, Microsoft приняла решение назвать свою новую версию SQL Server для Windows NT 4.2 (то есть добавив номер версии), при этом маркетинговое название продукта должно было выглядеть как Microsoft SQL Server for Windows NT, а внутреннее обозначение — SQL NT.
В июле 1992 года Microsoft провела конференцию для разработчиков ПО для платформы Windows NT и раздала альфа-версии Windows NT участникам конференции. Несмотря на то, что новая версия SQL Server не имела статус даже «беты-версии», Microsoft всё же незамедлительно обнародовала через CompuServe 32-битные программные библиотеки, необходимые разработчикам для портирования своих приложений с OS/2 и 16-битных версий Windows на Windows NT. Сделано это было с учётом успеха распространения NDK среди разработчиков ПО для Windows 3.0 в 1990 году, Microsoft же надеялась повторить тот успех, снабдив разработчиков всеми необходимыми инструментами для разработки ПО под Windows NT.
В октябре 1992 года Microsoft выпустила первую бета-версию SQL Server для Windows NT. Данная версия обладала всем основным (из заявленного) функционалом, а все его компоненты обладали полной поддержкой Win32. Данная версия распространялась при помощи более ста сайтов. Для СУБД подобное количество сайтов являлось беспрецедентным, поскольку типичное количество сайтов, выделяемых для распространения этого типа ПО, как правило не превышало 10.
Параллельно с рассылкой NDK всё ещё продолжались поставки версии SQL Server для OS/2 (они продолжились и в следующем году). К марту 1993 года Microsoft выпустила бета-версию продукта. Данную версию (SQL Server Client/Server Development Kit (CSDK)) можно было свободно купить за небольшую плату. Для его поддержки MIcrosoft организовала открытый форум на CompuServe и не требовала с тех, кто к ней обращался, подписания соглашения о неразглашении сообщаемых сведений. Таким образом удалось реализовать более трёх тысяч комплектов CSDK. К маю 1993 года количество обращений за поддержкой предварительной версии продукта превысило количество обращений по поводу версии для OS/2. Несмотря на количество заявок, общая реакция на предварительную версию продукта была довольно положительной.
В июле 1993 года Microsoft выпустила Windows NT 3.1. В течение 30 дней после её выхода команда разработчиков SQL Server выпустила первую версию Microsoft SQL Server для Windows NT. Выход был весьма успешен: росли продажи как самой СУБД, так и ОС для неё.
К началу декабря 1993 года значительная доля клиентов мигрировала с OS/2-версии на SQL Server для Windows NT. Опросы свидетельствовали о том, что те, кто ещё не перешёл на новую версию для Windows NT, планировали это сделать даже невзирая на объявление Sybase о намерении разрабатывать System 10 для OS/2. Переход с версии SQL Server для OS/2 на версию для Windows NT для приложений происходил довольно безболезненно, а кроме того при переходе на новую версию наблюдался рост производительности. Как следствие, через 9 месяцев продажи SQL Server уже в два раза превосходили продажи на начало этого периода. При этом 90 % продаж приходилось на новую версию для Windows NT, тогда как на старую версию для OS/2 — оставшиеся 10 %.
Внутренние тесты Microsoft показывали, что ориентация на единственную платформу (Windows NT) дала свои плоды: SQL Server для Windows NT (запущенный на более дешёвом оборудовании) превосходил по производительности СУБД, работавших на UNIX и более дорогом оборудовании. В сентябре 1993 года Compaq Computer Corporation опубликовала первые результаты проведённого теста Transaction Processing Council (TPC). На тот момент, согласно тестам TPC-B, наиболее распространённым показателем являлся $1000/TPS (English: transactions per second, транзакций в секунду). SQL Server, запущенный на машине с двумя процессорами Pentium с частотой 66 МГц, показал результат в 226 TPS при показателе $440 на транзакцию, что стало вполовину дешевле по сравнению с ранее опубликованными тестами. При этом большинство файл-серверов, работавших на мини-компьютерах под управлением UNIX, демонстрировали результаты, не превосходящие 100 TPS. И хотя были такие СУБД, которые демонстрировали значительно более высокие показатели, но и их ценовой эквивалент значительно превышал показатель в $440/TPS. Для сравнения, 18 месяцами ранее показатель производительности в 226 TPS являлся самым высоким из когда-либо достигнутых мэйнфреймами или мини-компьютерами.
SQL Server 6.0 (1993—1995)

Успех Microsoft вызвал рост напряжённости в отношениях с Sybase. Ситуация на рынке СУБД в конце 1993 года уже сильно отличалась от ситуации 1987 года, когда Microsoft и Sybase подписывали контракт. В 1993 году Sybase уже являлась успешной софтверной компанией, на рынке СУБД уступая лишь корпорации Oracle. Аналогично, за прошедшее время с 1987 года значительно выросла и Microsoft. Вместе с ней выросла и команда разработчиков SQL Server (в 1990 году их было около дюжины человек, а в 1993 году — уже более 50), не считая тех, кто занимался маркетингом и поддержкой продукта. Эти разработчики уже вполне хорошо знали внутренние механизмы SQL Server, а также обладали большим опытом по разработке аналогичной версии для Windows NT. Таким образом, Microsoft уже обладала всеми необходимыми ресурсами для самостоятельной разработки SQL Server, но соглашение с Sybase 1987 года связывало её, поскольку контракт подразумевал лишь лицензирование ею разработок у Sybase. Согласно действовавшим ограничениям этого контракта, Microsoft не могла добавлять новую функциональность или вносить любые другие изменения в код, не согласовав их предварительно с Sybase.
Ещё одним поводом для взаимного недовольства стало окончательное расхождение в потребностях при разработке SQL Server. Например, разработчики Microsoft желали интегрировать в SQL Server поддержку MAPI (Messaging API), но поскольку данная возможность была специфичной для Windows, то разработчики Sybase не спешили давать добро на её внедрение, поскольку в сфере интересов Sybase была разработка продукта для UNIX, а не для Windows NT. Поскольку Sybase с портирования своего продукта под прочие ОС не получала никакой выгоды, то инициативы Microsoft начали встречать у неё всё большее сопротивление. Фактически, перенос версии 4.2 на Windows NT уже был предметом разногласий, поскольку добавление специфичной для Windows NT функциональности версии 4.2 существенно тормозило разработку System 10 для прочих платформ. Sybase разрабатывала свою System 10 уже с прицелом на упрощение дальнейшего портирования на различные ОС (в том числе и Windows NT), но с точки зрения Microsoft это означало отказ от максимально возможного использования средств Windows NT, поскольку System 10 не могла и не смогла бы при подобном подходе работать на Windows NT также эффективно, как если бы она изначально именно для неё и разрабатывалась.
Всё это привело к тому, что теперь уже обе компании не особо нуждались друг в друге, а их соглашение 1987 года уже фактически перестало действовать. Microsoft SQL Server для Windows NT уже был вполне жизнеспособной альтернативой Sybase SQL Server, работавшему на UNIX, Novell NetWare и VMS. Теперь клиенты могли приобрести Microsoft SQL Server по стоимости, равной части стоимости подобного решения для UNIX, причём MS SQL Server можно было запустить на менее мощном (а значит и более дешёвом оборудовании) и для его администрирования требовался менее квалифицированный специалист. Роялти же от Microsoft составили бы лишь небольшую долю доходов Sybase от продаж её продуктов для UNIX. Так что обе компании уже боролись фактически за одних и тех же клиентов, но при этом уже обе понимали, что пришло время менять характер их отношений.
12 апреля 1994 года Microsoft и Sybase объявили об окончании совместной разработки SQL Server. Каждая компания решила продолжить работу над собственной версией SQL Server. Microsoft получила возможность самостоятельно, без оглядки на Sybase, разрабатывать Microsoft SQL Server. Sybase теперь без помех могла заняться портированием System 10 на Windows NT (впервые SQL Server с логотипом Sybase стал бы доступен на платформе Windows NT, поскольку их соглашение подразумевало исключительно права Microsoft на разработку под свою платформу). При этом оба продукта должны были поддерживать обратную совместимость с существовавшими на тот момент приложениями для SQL Server, однако в дальнейшем эта идея никак не поддерживалась из-за слишком различающихся целей. Sybase разрабатывала свой продукт ориентируясь в первую очередь на его совместимость с версиями для UNIX, а Microsoft — совместимость с Windows NT. Вскоре, обе линейки SQL Server стали напрямую конкурировать друг с другом, причём Microsoft вновь попала в двойственную ситуацию: ей пришлось заниматься поддержкой конкурирующего продукта (System 10) на платформе Windows NT, поскольку доступность различных продуктов позитивно влияла на продажи ОС.
В начале 1994 года команда разработчиков SQL Server для новой версии планировала взять исходный код Sybase System 10, но разрыв соглашения полностью изменил эти планы. Если не считать пары исправлений, то последние исходники от Sybase были получены в начале 1992 года (версия 4.2 для OS/2). С учётом того, что Sybase собиралась выпустить System 10 для Windows NT к концу этого года, то с точки зрения пользователей это стало бы неплохим поводом обновить свою версию СУБД, перейдя с версии Microsoft SQL Server 4.2 на Sybase System 10. В свою очередь, для Microsoft это означало потерю клиентской базы, а следовательно нужно было быстро готовить ответный шаг.
В Microsoft был быстро запланирован амбициозный релиз, содержащий множество улучшений производительности и функциональности. Будущий релиз получил кодовое обозначение SQL95, намекая на запланированный к выходу релиз Windows 95. В 1994 году был актуален вопрос репликации данных средствами СУБД, поэтому репликация стала краеугольным камнем будущего релиза. То же касалось и позиционируемых курсоров — механизм, по мнению разработчиков, просто необходимый для преодоления разрыва между приложениями, ориентированными на работу со множеством записей, и реляционной БД. Ни одна из распространённых СУБД на тот момент ещё не обладала полнофункциональной реализацией позиционируемых курсоров для клиент-серверной архитектуры, и команда разработчиков SQL Server считала, что данный механизм положительно скажется на репутации их продукта. Кроме того, шла работа над абсолютно новым набором инструментов управления под кодовым названием Starfighter (впоследствии получивший название SQL Server Enterprise Manager), который планировалось включить в следующую версию. Список новых возможностей постепенно всё более расширялся.
Общая реакция клиентов на новость о планах Microsoft самостоятельно разрабатывать SQL Server была довольно негативной. 14 июня 1994 года в Сан-Франциско Microsoft провела общую конференцию для клиентов, аналитиков и журналистов. Джим Алчин, на тот момент занимавший должность старшего вице-президента Microsoft, рассказал о планах на будущее и о планируемом выпуске SQL95. Представленные планы и проекты были восприняты с одобрением, но многие открыто высказывали скепсис в отношении сроков выхода, сомневаясь в том, что Microsoft сможет выпустить обещанный продукт к концу 1995 года. В прессе новый релиз даже саркастически именовали SQL97 и даже SQL2000. Согласно же внутренним планам, разработчики готовились представить релиз в первой половине 1995 года. Первую бета-версию выпустили в октябре 1994 года. На этот момент Starfighter ещё не был закончен, но сам сервер был уже завершён, а поскольку именно при скачивании сервера создаётся наибольшая нагрузка на сайты с бета-версиями, то было решено выпустить его бета-версию в первую очередь. После выпуска последовала череда обновлений, продолжавшаяся несколько месяцев, параллельно с увеличением количества сайтов, достигшим показателя в 2000 сайтов.
Кроме того, ещё в 1993 году Microsoft приняла решение, что базы данных будут ключевой технологией в полной продуктовой линейке, и в конце 1994 года Microsoft начала заказывать экспертные консультации со стороны DEC и других ключевых вендоров рынка для команд разработчиков, работавших над проектами Microsoft Jet and SQL Server. Целью данных консультаций являлось планирование компонентов для нового поколения продуктов для работы с базами данных. В течение 1995 года параллельно с выпусками основной командой SQL Server 6.0 и SQL Server 6.5, вторая команда разработала новый процессор запросов как часть компонента, который впоследствии превратился в Microsoft Data Engine (MSDE). Параллельно с разработкой MSDE велась работа и над OLE DB, набором интерфейсов, который позволил бы разрабатывать элементы основного продукта SQL Server как независимые компоненты. Такие компоненты обладали бы возможностью взаимодействовать друг с другом, используя слой OLE DB.
Примерно в течение девяти месяцев работа над SQL Server велась и по ночам. 14 июня 1995 года продукт был выпущен под названием Microsoft SQL Server 6.0, таким образом уложившись во внутрикорпоративные сроки. Вслед за выпуском версии последовало множество положительных публикаций в профильной прессе. Журнал InfoWorld по результатам второго ежегодного опроса о 100 компаниях с самыми инновационными приложениями в области клиент-серверных технологий поместил Microsoft SQL Server на второе место в рейтинге среди СУБД. При этом SQL Server увеличил свою долю с 15 % до 18 % среди опрошенных, указавших данную СУБД в качестве своего выбора, тогда как доля СУБД Oracle снизилась с 24 % до 19 %, соответственно. Доля Sybase также выросла с 12 % до 14 %. Три из десяти лучших приложений, отмеченных InfoWorld, были созданы с использованием Microsoft SQL Server.
SQL Server 6.5 (1995—1996)

Однако были данные и о том, что доля Microsoft SQL Server на рынке значительно меньше, чем показывали подобные опросы. Одной из проблем оставалось то, что Microsoft всё ещё оставалась новичком в секторе СУБД. На тот момент явным лидером являлась Oracle, и серьёзные позиции были у Sybase, Informix и IBM. На рынке фактически сложилась весьма тревожная ситуация для Microsoft поскольку все эти компании начали выстраивать свои тактики продаж, нацеливая их против Microsoft SQL Server. При этом Sybase, Informix и Oracle планировали выпуск новых версий своих продуктов. В рамках стратегии развития SQL Server Microsoft продолжила активное усиление команды разработчиков SQL Server, история которой на тот момент уже насчитывала более четырёх лет. Были наняты как уже известные профессионалы на тот момент как, например, Джим Грей, Дейв Ломет и , так и менее известные разработчики, в том числе бывшие работники DEC, работавшие над Rdb.
После выхода версии 6.0 началась работа над версией 6.5. В рамках новой версии планировалось реализовать те возможности, которые были отложены при выпуске версии 6.0, тем более, что за 18 месяцев её разработки требования к СУБД существенно подросли. Например, в 1995 году большую роль уже играли Интернет и передача данных. Выпуск версии 6.5 должен был удовлетворить данные запросы. Полнофункциональная бета-версия версии 6.5 была выпущена 15 декабря 1995 года при помощи 150 бета-сайтов. Официальные поставки новой версии начались в апреле 1996, то есть примерно через 10 месяцев после выхода версии 6.0.
В функциональность также были добавлены инструменты для упрощения использования продукта пользователями, расширенная поддержка распределённых транзакций и другие возможности. Также был получен сертификат соответствия стандарту языка ANSI SQL.
Позднее, в декабре 1997 года, параллельно с выходом второй бета-версии SQL Server 7.0 была выпущена и версия SQL Server 6.5 EE, обладавшая поддержкой двухузловых отказоустойчивых кластеров Microsoft Cluster Server, 8 процессоров и адресного пространства 3 Гбайт.
SQL Server 7.0 (1996—1998)

Разработка
В конце 1995 года началась разработка следующей версии SQL Server, получившей кодовое название Сфинкс (English: Sphinx). Уже на первом этапе в код SQL Server был добавлен код будущего MSDE, а команда разработчиков, работавшая над ним, присоединилась к основной команде разработчиков SQL Server. Разработка нового поколения SQL Server преследовала одну главную цель: перепроектировать весь движок сервера баз данных таким образом, чтобы позволить пользователям масштабировать SQL Server согласно их желаниям. Это подразумевало собой последовательное наращивание возможностей для максимально эффективного использования более быстрых процессоров (а также увеличения их количества) и объёма памяти, доступного операционной системе. Кроме того, такое наращивание не должно было ограничивать возможность добавления новой функциональности в любой из компонентов, например, в код обработчика запросов можно было легко добавить новый алгоритм подключения нового жёсткого диска. Кроме подобного наращивания возможностей, SQL Server должен был поддерживать новые классы приложений для баз данных, а это в свою очередь означало процесс, обратный наращиванию возможностей, а именно урезание требований к аппаратному обеспечению, чтобы продукт смог работать и значительно более слабых системах, как например, домашние ПК или ноутбуки.
В ближайшей перспективе благодаря подобному перепроектированию планировалось достичь двух целей:
реализовать полноценную блокировку на уровне строк с наличием интеллектуального менеджера блокировок;
создать новый обработчик запросов, поддерживающий такие механизмы, как распределённые гетерогенные запросы, и эффективно обрабатывающий произвольные запросы.
Одной из областей, вызвавшей повышенное внимание при разработке, было улучшение качества работы высокоуровневых приложений, таких как программное обеспечение планирования корпоративных ресурсов. Здесь как раз и требовались масштабируемость и удобство использования вкупе с высокой надежностью ядра базы данных. Также были разработаны несколько алгоритмов, которые автоматизировали большую часть настройки базы данных и позволяли системе самостоятельно решать некоторые вопросы настройки, которые вставали перед администратором базы данных. По данным алгоритмам впоследствии Microsoft получила несколько патентов. Также велась работа и над обеспечением механизма блокировки на уровне записи. Данный механизм позволил бы приложениям обращаться к конкретной строке в таблице, а не к целой странице, что привело бы к значительному уменьшению числа конфликтов при нескольких одновременных изменениях данных в одной таблице. В версии 6.5 данный механизм имел весьма ограниченную реализацию, поэтому в новой версии предполагалась уже реализация полной блокировки на уровне записи[11].
В октябре 1996 года Microsoft приобрела технологию Plato у израильской компании Panorama Software Systems. Данная технология представляла собой одну из реализаций технологий OLAP для СУБД. На тот момент (равно как и к моменту выхода SQL Server 7.0 в 1998 году) технология OLAP считалась весьма сложной в использовании и потому была малоиспользуемой. Тем не менее было принято решение встроить Plato в код SQL Server 7.0, но с учётом требований масштабирования, предъявляемых к новой версии SQL Server, в результате потребовалась переделка Plato для соответствия аналогичным требованиям. Перед разработчиками была поставлена задача превратить её в продукт, который по масштабируемости, удобству использования и интеграции с ПО корпорации не отличался бы от любого продукта Microsoft. В дальнейшем, сервер OLAP, ставший одним из ключевых дополнений SQL Server 7.0, получил название OLAP Services[11].
В декабре 1996 года был выпущен Microsoft Transaction Server 1.0 (кодовое название — Viper), сочетающий функциональность монитора транзакций и брокера объектных запросов.
Бета-версии
В июне 1997 года состоялся ограниченный выпуск первой бета-версии нового SQL Server 7.0. В декабре того же года нескольким сотням пользователей была разослана для тестирования вторая бета-версия продукта. Из-за перехода к новой архитектуре при обновлении версии SQL Server пользователям требовалось полное изменение баз данных и их структур. Для поддержки перехода клиентов на новую версию была объявлена специальная программа 1K Challenge, в рамках которой 1000 клиентов могли прислать разработчикам SQL Server копии своих баз данных для портирования их на версию 7.0. Спецлаборатория для проверки результатов портирования была создана в том же редмондском кампусе, где размещалась команда разработчиков SQL Server. Еженедельно с февраля по август 1998 года четверо или пятеро сторонних компаний-разработчиков ПО на неделю присылали свои группы разработчиков в Microsoft, в течение которой они в лаборатории проверяли, что их продукты будут без каких-либо проблем работать с SQL Server 7.0. При обнаружении каких-либо проблем ведущие разработчики SQL Server сразу занимались их решением, предварительно обсудив варианты решений с гостями.
В июне 1998 года была выложена версия Beta 3 на специально выделенном для этого веб-сайте. Вместе с бета-версией было опубликовано и несколько примеров решений задач, демонстрируюших новые возможности продукта. Кроме того, был запущен специальный новостной сервер, чтобы любой пользователь версии Beta 3 мог сообщить о найденных ошибках или задать вопрос разработчикам о новых возможностях продукта. Всего более 120 тысяч тестировщиков получили SQL Server 7.0 Beta 3. В это число вошли компании, напрямую заказавшие версию через веб-сайт Microsoft, подписчики MSDN, а также участники официальной программы по бета-тестированию Microsoft Beta Program (которые получают бета-версии всех продуктов Microsoft по мере их выхода).
Перед выходом SQL Server 7.0 появились слухи о намерении Microsoft заменить Access упрощенной версией своей реляционной базой данных SQL Server. Корпорация опровергла их, заявляя о том, что в новой версии Access для Office 2000 будет два альтернативных ядра базы данных: Jet, — уже выпускаемая, «родная» среда хранения для Access, и новое MSDE. Согласно представленной тогда информации, MSDE должен был стать не встроенной версией SQL Server, а представлять собой технологию хранения данных, совместимую с SQL Server, имеющим ту же компонентную архитектуру, что в свою очередь позволило бы разработчикам, используя Access в качестве интерфейсного модуля к SQL Server, применять MSDE для создания приложений, которые могли бы масштабироваться от настольной базы данных в реляционного «старшего брата» для SQL Server или SQL Server Enterprise[11].
Выход
16 ноября 1998 года на конференции COMDEX в Лас-Вегасе SQL Server 7.0 был публично представлен. Представлял новую версию лично Стив Балмер. Основной упор в своём выступлении он сделал на повышении производительность SQL Server 7.0 относительно предыдущей версии. Также он отметил и вопросы, связанные с масштабируемостью и готовностью работы с приложениями. По его словам, «такие производители ERP-систем, как Baan, PeopleSoft и SAP, смогут использовать эту СУБД практически во всех своих проектах, за исключением, может быть, самых крупных». По его прогнозам в течение ближайших полутора лет независимыми производителями должно было быть создано около 3 тыс. приложений для SQL Server 7.0. К моменту же выхода данной версии было более дюжины успешных её внедрений, в том числе в таких крупных компаниях как HarperCollins, CBS Sportsline, Comcast Cellular и Southwest Securities. Причём 10 из них уже перешли на новую версию, а Pennzoil, Barnes & Noble и HarperCollins Publishers к тому моменту тестировали её уже несколько месяцев. Представители Pennzoil, News America (подразделение HarperCollins) и Barnes & Noble подтвердили возросшую производительность новой версии. Помимо самого продукта SQL Server 7.0 на COMDEX был представлен и специальный сервер для бесперебойной работы SQL Server 7.0, а производитель ERP-систем корпорация Baan представила комплект приложений BaanSeries '99, предназначенный исключительно для SQL Server 7.0[11].
Весь цикл разработки, по словам Дуга Леланда, менеджера по маркетингу SQL Server корпорации Microsoft, длился 3,5 года. Им же новая версия позиционировалась как «первая реляционная СУБД Microsoft, которая поддерживает все её 32-разрядные операционные системы семейства Windows», причём планов по выпуску версий SQL Server для других ОС у Microsoft не было[11].
Выход же версии 7.0 состоялся 2 декабря 1998 года как билд 7.00.623.07, при этом заморозка кода состоялась 27 ноября 1998 года. Для свободного заказа продукт стал доступен в январе 1999 года.
Многие аналитики рассматривали выпуск версии 7.0 как «значительный шаг к завоеванию рынка корпоративных вычислительных систем». По их мнению, Microsoft рассчитывала на то, что благодаря переработанной функциональности SQL Server 7.0 станет корпоративным стандартом на базы данных. Добавление оперативной аналитической обработки в SQL Server 7.0 аналитиками рассматривалось как событие, которое «может стать самым важным событием, произошедшим на рынке OLAP с момента его возникновения». Причиной этого было то, что системы OLAP на тот момент были рассчитаны исключительно на корпоративный сегмент, а поскольку стратегия Microsoft предполагала создание версий и для домашних ПК в том числе, то благодаря этому технологии OLAP становятся доступными и для небольших компаний, что само по себе подразумевает значительную популяризацию OLAP[11].
Ещё одним доводом в пользу «стандартизации SQL Server 7.0» была способность SQL Server интегрироваться с остальными корпоративными системами, что было критически важно в условиях гетерогенных многоуровневых сред и наличии разнородных платформ и хранилищ данных. Для продвижения в этой области Microsoft разработала внутренние стандарты на интеграцию данных, такие как OLE DB и ADO, а также вела работу со сторонними производителями ПО. Однако, конкуренты критиковали подобные стандарты, заявляя, что «некоторые из этих стандартов — сугубо внутренние», что резко ограничивает возможность их применения сторонними заказчиками. Значительной критике подвергся в том числе и стандарт OLE DB for OLAP, который Microsoft предлагала в качестве отраслевого стандарта и вместе с тем как часть своей оболочки для создания хранилищ данных. Так, например, Джефф Джонс, менеджер программы по маркетингу систем управления данными корпорации IBM, в качестве основного недостатка называл то, что данный стандарт разрабатывался Microsoft, а не каким-либо консорциумом по стандартизации, как это широко практиковалось. На подобную критику представители Microsoft отвечали, что стандарт разрабатывался с участием более 60 производителей хранилищ данных[11].
Аналитики отмечали, что у Microsoft были все шансы добиться поставленной цели. В пользу этого говорило и активное стимулирование сторонних производителей создавать программное обеспечение для SQL Server 7.0, и модель распространения выглядела лучше чем у конкурирующих Oracle и IBM, способная в перспективе позволить продавать оптовые партии по более низкой цене и за счет этого стать серьезным игроком на рынке корпоративных баз данных[11].
Продавать новую версию планировалось по всему миру через реселлеров, сначала — оригинальную англоязычную версию, а в течение следующих двух месяцев должны были появиться и версии на французском, немецком, испанском и японском языках. К концу февраля 1999 года Microsoft планировала выпустить также и китайскую версию. С точки зрения версий продукта планировался выпуск стандартной и корпоративной версий в трёх конфигурациях каждая (в зависимости от количества допускаемых пользователей). Кроме того, было объявлено о специальном предложении, благодаря которому пользователи в течение 99 дней с момента объявления могли модернизировать свою систему до SQL Server или перейти на неё с конкурирующих СУБД, заплатив за SQL Server 7.0 всего 99 долларов на пользователя[11].
Аналитики высказывали предположения о том, что эти расценки могут вынудить конкурентов Microsoft в области баз данных снизить традиционно высокую стоимость своих продуктов (тем не менее, Oracle, например, официально отказалась пойти на такой шаг). Также аналитики довольно скептически восприняли новую версию, посчитав, что SQL Server 7.0 был предназначен в первую очередь для систем младшего класса рынка баз данных для Windows NT, тем более, что несколько участников бета-тестирования подтвердили, что новая версия полностью удовлетворяет их требованиям. Так, Херб Эдельштейн, аналитик компании Two Crows, заявил о том, что «низкие цены, установленные Microsoft, направлены на устранение конкуренции на этом рынке», при этом «даже с учётом всех новых возможностей SQL Server 7.0 сможет решить лишь часть задач, стоящих перед пользователями крупных корпораций». Бетси Бартон, аналитик компании Gartner Group, считал, что хотя и дополнения, представленные в новой версии, «заслуживают внимания», тем не менее «общая надежность и масштабируемость системы пока остается под вопросом». Однако, представители компаний, в которых тестировалась новая версия, продолжали положительно характеризовать продукт. Помимо ранее упомянутых компаний, положительно о продукте отозвались и Марк Митчел, системный консультант компании Applied Automation, и Джо Мисяжек, менеджер по поддержке приложений для системы, используемой в Colorado Community College. Они отметили доступную стоимость продукта, хорошую производительность и относительную простоту освоения[11].
Подобные шаги Microsoft вызвала ответную реакцию конкурентов. Так, например, корпорация Oracle вынуждена была изменить свою стратегию продаж. Согласно распространённому заявлению, корпорация должна была начать продавать свою СУБД, установленную на предварительно сконфигурированных «серверных устройствах», которые используют упрощенную операционную систему, разработанную с участием самой Oracle. Согласно словам главы Oracle Ларри Эллисона, подобные нововведения должны были «снизить стоимость владения СУБД Oracle и в то же время усилить конкурентоспособность продукта в противостоянии с SQL Server компании Microsoft». В середине ноября 1998 года Oracle подписала соглашение с компаниями Dell, Compaq, Hewlett-Packard и Sun Microsystems, в соответствии с которым продажа серверов должна была начаться к концу первого квартала 1999 года. Операционная система, устанавливаемая на новых серверах, содержала компоненты Solaris (в дальнейшем предполагалось использовать компоненты Linux) и была настолько простой, что данная инициатива получила название Raw Iron («Голое железо»). Партнёры Oracle собирались предложить три типа серверов («небольшие, средние и крупные», как назвал их Эллисон), предварительно сконфигурированных для решения конкретных задач, таких как электронная почта и IFS (файловая система Internet). Таким образом, должен был состояться переход от продаж коробочной версии СУБД к продажам серверов, стоимость владения которых намного ниже. Эта стратегия, по мнению Эллисона, должна была помочь переманить часть покупателей SQL Server[11].
SQL Server 2000 (1998—2000)
Как и в предыдущие разы, работа над SQL Server после выхода седьмой версии не остановилась. В версию 7.0 была включена далеко не вся изначально запланированная функциональность, а кроме того имелось ещё несколько разработок, находившихся на финальных этапах, предназначенных для включения в следующий крупный релиз. Таким образом началась разработка двух версий: Шило (English: Shiloh) — «младший» релиз версии 7.0 (условно говоря 7.5 по аналогии с предыдущим релизом), и Юкон (English: Yukon) — следующий крупный релиз.
Изначально продукт-менеджеры SQL Server неохотно прогнозировали популярность SQL Server 7.0. Причина этого заключалась в том, что данный релиз основывался на полностью переписанном коде движка сервера, из-за чего многие клиенты рассматривали его лишь как первый релиз и было очевидно, что многие из потенциальных клиентов седьмой версии предпочтут подождать какой-нибудь «исправленной версии» либо хотя бы первого сервис-пака (пакета обновления). Так что Shiloh изначально был запланирован как некий суперсервис-пак, причём в него планировалось включить и функциональность, не вошедшую в версию 7.0 из-за сжатых сроков разработки, а также и исправление всех найденных на тот момент ошибок, что было слишком объёмно для обычной «ненумерованной» версии. Соответственно, планировалось выпустить Shiloh не позже чем через год после выхода SQL Server 7.0.
Однако сразу несколько факторов повлияли на изменение первоначальной концепции Shiloh. Во-первых, вопреки ожиданиям лишь небольшая часть клиентов сомневалась в необходимости перехода на версию 7.0, причём показатели продаж новым клиентам превосходили самые смелые ожидания. Отзывы клиентов также были вполне благожелательными. Даже после выхода SQL Server 7.0 Microsoft продолжала держать лабораторию для разработчиков стороннего ПО, благодаря чему разработчики постоянно получали отзывы и замечания клиентов. Замечания и обнаруженные ошибки легко правились в обычном порядке и пакет исправлений для SQL Server 7.0 был выпущен в мае 1999 года. Второй пакет исправлений вышел в марте 2000 года. Таким образом, необходимость в суперсервис-паке, каким изначально выглядел Shiloh, отпала.
Вторым фактором стали запросы функциональности от клиентов. Так, например, запланированная изначально реализация контроля ссылочной целостности при каскадных обновлениях и удалениях в конечном итоге в состав SQL Server 7.0 не вошла. Клиенты же высказывали чрезвычайную заинтересованность в подобном механизме и требовали реализовать его как можно скорее. Помимо этого, высказывались многочисленные пожелания относительно реализации поддержки секционированных представлений и оптимизации поддержки звездообразной схемы проектирования, широко используемой в приложениях для учёта товаров на складах.
Ещё одним фактором была конкуренция между производителями СУБД, требовавшая, чтобы следующий релиз был больше и лучше, чем это изначально планировалось. Большое влияние оказала и «задача на миллион долларов», заданная Ларри Эллисоном из Oracle Corporation, наглядно выявившей ту часть функциональности, что была уже реализована в СУБД Oracle, но всё ещё отсутствовала в SQL Server. Добавление подобной функциональности далеко выходило за рамки простого исправления.
В итоге, было принято решение сделать Shiloh полноценным крупным релизом с 18-месячным циклом разработки, но с сохранением официального номера версии 7.5. Количество изменений на тот момент прогнозировалось с трудом, и единственным изменением, о котором на тот момент было точно известно, это усовершенствование каскадных обновлений и удалений. Вскоре стало ясно, что релиз уже вырастает за рамки первоначальных планов. Параллельно росла и команда разработчиков, переселившаяся из главного кампуса Microsoft в часть офисов сдвоенного здания. Увеличение числа разработчиков позволяло добавить в продукт большое количество средних и мелких доработок без какого-либо существенного сдвига сроков выпуска продукта.
Также разработчики помимо задач улучшения и увеличения функциональности поставили перед собой т. н. «гибкие задачи». Например, он объявили о необходимости добиться 20%-го прироста производительности для всех типов приложений, но для конкретизации задачи производилось сравнение с определёнными приложениями. Так, например, одной из главных целей было улучшение показателей производительности в тесте производительности SAP R/3 Sales and Distribution как минимум на 40 %. Для достижения поставленной задачи разработчиками были сделаны специальные изменения в оптимизаторе, напрямую влияющие на запросы от SAP, но при этом улучшающие и запросы от других приложений. 17 февраля 2000 года на мероприятии в честь выхода Windows 2000 в Сан-Фрациско были объявлены результаты измерения производительности в тесте Sales and Distribution, показавшие допустимую нагрузку в 6700 пользователей, что значительно превзошло показатели SQL Server 7.0 (4500 пользователей) на том же самом тесте и оборудовании (использовалась восьмипроцессорная машина с Pentium III-550). Таким образом, прирост производительности составил 48 %, и значит данная задача была выполнена.
После принятия решения о продлении срока разработки до 18 месяцев было принято ещё одно решение о добавлении новой функциональности. Данное решение содержалось в строжайшем секрете и не обсуждалось даже со многими руководителями в Microsoft. Новая функциональность не упоминалась даже после выхода первой бета-версии в ноябре 1999 года, и была публично представлена лишь в феврале на мероприятии в честь выхода Windows 2000. Этот тайный проект под кодовым именем Койот (English: Coyote) был нацелен на добавление в SQL Server 2000 поддержки распределённых секционированных представлений, что позволило бы достичь высокой масштабируемости при работе с данными. Именно эта функциональность и позволила поставить мировой рекорд, о котором было объявлено в Сан-Франциско в феврале 2000 года. Изначально данные изменения масштабируемости были задуманы для версии, следующей за Shiloh, но поскольку большинство из необходимых компонентов уже фактически были готовы, то данную функциональность было решено добавить в SQL Server 2000. К этим изменениям относилось и расширение оптимизации объединяющих представлений, а также возможность обновлять такие представления.
Первая бета-версия Shiloh была выпущена для первых испытаний и тестирования бета-тестировщиками в сентябре 1999 года, а вскоре Microsoft объявила, что официальным названием новой версии продукта станет SQL Server 2000. Для подобной смены названий было две основные причины. Во-первых, в виду многочисленных и серьёзных изменений в новой версии было невыгодно выпускать её как промежуточную (7.5), а значит нужен был новый номер. Но во-вторых, если выпустить новую версию как 8.0, то получится, что из всего семейства Microsoft BackOffice это будет единственный продукт, не имеющий приставки 2000 в названии. Чтобы соблюсти единство названий продуктов было решено назвать продукт SQL Server 2000 (при этом внутренний номер версии всё равно выглядел как 8.00.194).
С точки зрения пользователя, SQL Server 2000 предоставлял ему гораздо больше возможностей чем предыдущая версия. SQL Server 7.0 обладал полностью переписанным движком, поддержкой новых хранимых структур, методов доступа к данным, технологий блокировки записей, алгоритмов восстановления, новой архитектурой логирования транзакций, новой архитектурой памяти и оптимизатором. Но несмотря на всё это, с точки зрения разработчика или администратора БД изменения и улучшения языка в SQL Server 7 были минимальными. SQL Server 2000 обладал многочисленными языковыми улучшениями, равно как и серьёзными изменениями в представленных ранее объектах, таких как например, табличные ограничения, представления и триггеры, в которых нуждались все разаботчики и большинство администраторов БД.
Поскольку внутренние изменения в движке были минимальны, то запланированы были лишь две бета-версии. Вторая бета-версия, вышедшая в апреле 2000 года, стала публичной бета-версией и была разослана тысячам заинтересованных пользователей, участникам специализированных конференций, сторонним разработчикам ПО и консультантам. Команда разработчиков заморозила код 6 августа 2000 года на версии 8.00.194.01, и 9 августа продукт был выпущен.
SQL Server 2005 (2000—2005)
Разработка следующей версии SQL Server, получившей кодовое обозначение Yukon, началась параллельно с подготовкой 64-битной версии SQL Server 2000 под кодовым названием Liberty. Liberty по функциональности представляла собой по сути ту же самую 32-битную версию, но отличие заключалось в значительно больших возможностях масштабирования. Новая же функциональность должен был быть реализован в составе Yukon.
В июле 2002 года Microsoft в рамках официальной презентации своей новой платформы .NET Framework объявила о том, что следующая версия SQL Server под кодовым названием Yukon сможет использовать возможности платформы .NET. В частности, было заявлено, что в Yukon будет проще управлять распределёнными данными[12].
24 апреля 2003 года на конференции в Сан-Франциско, посвящённой выходу Windows Server 2003, Microsoft объявила о выходе 64-битной версии SQL Server 2000 (ранее известной как Liberty). Согласно опубликованному пресс-релизу новая версия SQL Server 2000 была рассчитана на работу совместно с 64-битной версией Windows Server 2003. Третьим продуктом, представленным вместе с Windows Server 2003 и новой версией SQL Server 2000 стал Visual Studio .NET 2003. Данное трио продуктов, согласно замыслу Microsoft, представляло собой следующую ступень взаимосвязанности ОС, SQL-сервера и среды разработки, тем самым вплотную подойдя к переходу на единую платформу .NET Framework, что было в гораздо более полной мере реализовано в следующей версии SQL Server. В рамках презентации Стив Баллмер и  заявили, что сервер с установленной новой версией SQL Server 2000 поставил два новых рекорда согласно результатам тестов некоммерческой организации . Как и в предыдущих случаях, новая версия была заранее установлена для тестирования крупным партнёрам Microsoft, среди которых назывались Корнеллский университет, Information Resources, Inc (), JetBlue Airways, Liberty Medical Supply () и Университет Джонса Хопкинса, в ответ на что официальные представители этих организаций дали положительную характеристику новому продукту[13].
Целью выпуска 64-битной версии было желание начать занимать ту часть рынка, которая раньше полностью принадлежала высокопроизводительным решениям на базе систем под управлением ОС UNIX. Несмотря на то, что функциональность по сути осталась неизменным относительно 32-битной версии, 64-битная версия могла работать со значительно большим объёмом памяти, доступ к которой реализовывала 64-битная система Windows Server 2003, за счёт чего новая версия SQL Server 2000 могла масштабироваться до уровня высокопроизводительных систем, с которыми конкурировать 32-битная версия не могла в силу своих ограничений. Покупателям 32-битной версии переход на новую версию предлагался без дополнительной платы[13].
В ноябре 2003 года на конференции PASS в Сиэттле руководители Microsoft рассказали о новых механизмах ETL, реализуемых в Yukon, при помощи которых реализовывался перенос ранее накопленной информации из существующих приложений в хранилища данных. С точки зрения Microsoft эти механизмы должны были стать одним из аргументов для привлечения корпоративных пользователей. Архитектура SQL Server ETL, реализуемая в Yukon, получила название Data Transformation Services (DTS). Как отметил Гордон Манжионе, вице-президент Microsoft и глава подразделения SQL Server Team, в DTS планировалось реализовать поддержку параллелизма, благодаря чему пользователи смогут одновременно выполнять несколько сложных задач, как например, трансляция данных, их чтение и перезапись в одном потоке[14].
Помимо ETL упор делался и на упрощение конфигурирования и управления СУБД, а также улучшение масштабируемости. В частности, представители Microsoft заявляли, что, к примеру, процесс, охватывающий миллионы колонок данных, благодаря увеличению масштабируемости сможет выполняться в течение нескольких секунд, а не минут. Кроме того, в новую версию SQL Server планировалось включить функции, упрощающие создание хранилищ данных и управление ими, а также выполнение операций, связанных с интеллектуальной поддержкой бизнеса. Разработчикам Microsoft обещала новый API, поддерживающий платформу .NET (и язык Visual Basic в частности), избавляя тем самым от необходимости использовать специфический код DTS[14].
Также во время конференции Манжионе объявил о завершении работ по созданию продукта Best Practices Analyzer для SQL Server 2000, поддерживающий список из 70 правил, составленный совместно разработчиками Microsoft и пользователями SQL Server. Такой список должен был упростить процесс конфигурирования СУБД администраторами баз данных и помочь им избежать самых распространенных ошибок. При этом поддерживались функции резервного копирования и восстановления после сбоев, а также управления СУБД и контроля производительности. Манжионе пообещал, что корпорация будет обновлять этот инструментарий ежеквартально[14].
SQL Server 2008 (2005—2008)
Версия SQL Server, которая должна была заменить SQL Server 2005, получила кодовое имя Katmai. В период активной разработки Microsoft крайне неохотно делилась информацией о новой версии. На презентации SQL Server 2005 Пол Флесснер (на тот момент занимавший пост вице-президента подразделения Microsoft, занимавшегося разработкой SQL Server), уверенно заявил, что выход новой версии состоится не позднее, чем через два года после выхода SQL Server 2005. Однако в апреле 2007 года ещё не было никакой информации о скором выходе продукта, или хотя бы о начале его бета-тестирования. Тем не менее, в австрийском блоге на TechNet была опубликована информация о программе Katmai Technology Adoption Program (сокр. TAP), начало которой было якобы запланировано на июнь 2007 года. Также были упомянуты слухи о том, что новая версия выйдет в 2008 году, но Microsoft на тот момент ни подтверждала, ни отрицала эту информацию. Некоторые источники привязывали выход Katmai к выходу Longhorn Server and Visual Studio Orcas, из-за чего согласно этой информации новая версия должна была выйти в первой половине 2008 года. Microsoft также отказывалась комментировать эту информацию[15].
Тем не менее, некоторые журналисты, общавшиеся с представителями корпорации, заявляли о том, что слухи о выходе Katmai в 2008 году вполне соответствуют внутренним планам самой Microsoft. А отказ корпорации разглашать какую-либо информацию о новой версии связывался с переходом на новую модель разработки, причём именно из-за этого Katmai вряд ли должен был выйти в начале 2008 года. Также упоминалось о том, что Katmai не получит этапа официального бета-тестирования, а вместо этого публичное тестирование пройдёт в рамках программы Community Technology Preview (сокр. CTP). При этом утверждалось, что некоторые клиенты Microsoft уже в апреле 2007 года имели на тестировании некоторые части Katmai, не имея при этом на руках релиза целиком. Что касается функциональности новой версии, то журналисты писали о том, что Katmai будет представлять собой лишь развитие SQL Server 2005, а не новое поколение продукта, которым в своё время как раз и стал SQL Server 2005[15].
SQL Server 2008 R2 (2008—2010)

Разработка
Бета-версии
Выход
SQL Server 2008 R2 официально стала доступна для покупки 21 апреля 2010 года.
В конце 2010 года вице-президент подразделения Microsoft Business Platform Division Тед Каммерт сообщил, что новая версия «внедряется весьма быстро», в частности, за два месяца после выхода продукта «он был загружен по каналам Интернета около 700 тысяч раз», что, по его словам, стало «самым высоким показателем для новой версии SQL Server»[16].
SQL Server 2012 (2010—2012)

Разработка
Параллельно с этим, 30 июня 2010 года Скотт Гатри в своём блоге анонсировал выход новой мобильной версии SQL Server — SQL Server Compact 4.0, ориентированной в первую очередь на веб-приложения, созданные на основе технологии ASP.NET 4. В качестве достоинств новой версии Гатри выделил отсутствие необходимости в установке программы, а также совместимость с API .NET Framework (поддержка технологий ADO.NET, Entity Framework, NHibernate и др., возможность работы с Visual Studio 2010 и Visual Web Developer 2010 Express) и последними на тот момент версиями SQL Server и SQL Azure[17].
7 июля 2010 года Амбриш Мишра, менеджер проекта SQL Server Compact, в официальном блоге команды разработчиков SQL Server CE представил версию CTP1 нового SQL Server Compact 4.0. В качестве нововведений (помимо указанных Скоттом Гатри) указывались повышенная надёжность, улучшение алгоритма шифрования SHA 2, совместимость с файлами БД версии Compact 3.5, упрощение установки (в том числе и поддержка режимов WOW64 и 64-битных естественных приложений), снижение использования виртуальной памяти, технология делегирования полномочий Allow Partially Trusted Caller’s Attribute (APTCA), поддержка WebMatrix Beta и Visual Studio 2010, поддержка Paging Queries в языке T-SQL. При этом версия CTP1 обладала определёнными проблемами (некорректная работа деинсталляции через командную строку, проблемы с совместимостью с актуальной на тот момент версией ADO.NET Entity Framework CTP3 и др.)[18].
Бета-версии
Во время конференции PASS Summit, проходившей с 8 по 11 ноября 2010 года в Сиэттле, её участникам (а также подписчикам MSDN и TechNet) раздавались копии CTP-варианта Denali (через некоторое время эта версия была выложена на официальном сайте Microsoft). На самой конференции Тед Каммерт и Квентин Кларк, генеральный менеджер подразделения Microsoft Database Systems Group, представляя новую версию, рассказали о новой функции AlwaysOn и технологии VertiPac (входящей в состав служб аналитики SQL Server и хранилищ данных). Также упор был сделан на развитие инструментов бизнес-аналитики в новой версии, интерактивных средств виртуализации на базе Web (проект Crescent), а также инструментов для разработчиков под кодовым названием Juneau[16].
22 декабря 2010 года Амбриш Мишра в официальном блоге команды разработчиков объявил о выходе версии SQL Server Compact 4.0 CTP2 и наборе инструментов Visual Studio 2010 для работы с этой версией SQL Sever CE[19].
Финальная версия SQL Server Compact 4.0 официально была выложена на сайте Microsoft 12 января 2011 года, завершив таким образом этап разработки длиной примерно год[20].
11 июля 2011 года команда разработчиков SQL Server в своём официальном блоге объявила о выходе версии Community Technology Preview 3 (сокр. CTP3) и первом сервис-паке для SQL Server 2008 R2[21]. В качестве самых существенных нововведений (относительно SQL Server 2008 R2), реализованных в CTP3-версии нового продукта, аналитики отмечали компонент SQL Server AlwaysOn для создания резервных копий БД, возможность устанавливать SQL Server в среде Windows Server Core, столбцовую организацию хранения данных для ускорения выполнения запросов, усовершенствования языка T-SQL (введение объектов Sequence и оконных функций), возможность отслеживать изменение данных (CDC) для СУБД Oracle, возможность определения пользователем ролей сервера (ранее они были жёстко закреплены), службы управления качеством данных Data Quality Services (базы знаний, определяющие правила метаданных), новый инструмент визуализации данных под названием «Проект Crescent», поддержку автономных баз данных (для перемещения между локальными экземплярами SQL Server и SQL Azure) и новую среду разработки SQL Server Developer Tools под кодовым названием Juneau[22].
SQL Server 2008 R2 SP1 содержал исправления ошибок, на которые Microsoft получила жалобы от клиентов через службу Windows Error Reporting, а также некоторые улучшения функциональности (динамические административные представления (English: Dynamic Management Views), повышение скорости выполнения запросов при помощи технологии ForceSeek, технология Data-tier Application Component Framework (сокр. DAC Fx) для упрощения обновления БД, контроль доступного места на жёстком диске для PowerPivot)[21].
Выход
SQL Server 2014
В конце 2010 года (то есть до выхода SQL Server 2012) вице-президент подразделения Microsoft Business Platform Division Тед Каммерт в интервью рассказал о планах по дальнейшему развитию продукта (как версии SQL Server 2012, так и будущих версий). В частности, Каммерт рассказал о том, что работа над SQL Server идёт в контексте идей Information Platform Vision, представляющей собой набор разнообразных возможностей, который ложится в основу платформы. SQL Server будет по-прежнему представлять собой единый продукт, реализуемый в настольных системах, в центрах обработки данных и в «облаке» (как в 32-битном, так и 64-битном варианте). Одним из приоритетных направлений по-прежнему останется бизнес-аналитика (English: business intelligence, ). С точки зрения Microsoft приоритетом в области бизнес-аналитики останется разработка средств BI, реализующих принцип самообслуживания, а также развитие экосистемы «облачных» вычислений. Кроме того, Microsoft при переносе средств бизнес-аналитики в «облака» по-прежнему работает над реализацией принципа согласованности относительно реализуемых моделей программирования и инструментальных средств (это подразумевает, в частности, наращивание возможностей работы SQL Server Management Studio со средой SQL Azure). Также большое внимание уделено вопросам масштабирования СУБД (при этом лимит системы SQL Server должен быть увеличен до порога в несколько сот терабайтов), виртуализации приложений в среде баз данных, а также пространственному представлению данных[16].
Релиз SQL Server 2014 стал доступен 1 апреля 2014 года.
SQL Server 2016
В настоящее время доступен SQL Server 2016.
Примечания

Литература

CS1 maint: Multiple names: authors list (link)

Ссылки

Категория:Реляционные СУБД
Категория:Серверные технологии Microsoft
Категория:Проприетарные СУБД