История
SQL Server 1.0 впервые увидел свет в 1989 году. Это было совместное детище фирм Microsoft и Sybase, первой из которых необходим был свой сервер SQL для тогда ещё активно продвигаемой OS/2, а другой - возможность быстрого выхода на растущий рынок ПК, куда уже устремились конкуренты. С самой первой версии SQL Server получал самые лестные отклики обозревателей, в первую очередь за простоту администрирования и поддержку хранимых процедур на сервере. Совместное развитие проекта SQL Server происходило вплоть до 1992 года, когда была выпущена версия 4.2 для OS/2, соответствовавшая по характеристикам Sybase 4.9.1 для Unix. Дальнейшие разработки и перенос версии 4.2 на платформу Windows NT, связанный с полным пересмотром архитектуры ядра сервера, был выполнен в основном фирмой Microsoft. После 1993 года Sybase приняла решение о выпуске собственных версий сервера для Windows NT, хотя Microsoft и сохранила часть прав на исходные коды. В 1994 году вышла версия SQL Server 4.21 с поддержкой NT 3.5, улучшенными утилитами администрирования, поддержкой расширенных хранимых процедур и улучшенным быстродействием. В 1995 году увидел свет SQL Server 6.0, имеющий в своем составе массу усовершенствований и нововведений. И наконец в 1996 году на рынок вышел SQL Server 6.5 - последняя и наиболее мощная реализация сервера баз данных Microsoft.
Обзор возможностей
Перечислим основные из возможностей SQL Server 6.5:
| Devices (логические устройства) | 256 логических устройств на SQL Server, предельный размер логического устройства 32 Гб |
| Databases (базы данных) | 32,767 баз данных на сервер; минимальный размер базы 1 Мб, но не менее чем размер базы model, максимальный размер - 1 терабайт (Тб) |
| Segments (сегменты) | максимальное число сегментов в базе данных - 32 |
| Tables (таблицы) | предельное число таблиц в базе 2,147,483,647; максимальная длина строки в таблице без учета text и image полей - 1962 байта; максимальный размер таблицы - 1 Тб |
| Columns (столбцы) | до 250 столбцов в таблице |
| Indexes (индексы) | 1 кластерный индекс на таблицу; до 249 некластерных индексов на таблицу; составной индекс может включать до 16 столбцов |
| Triggers (триггеры) | максимум три триггера на таблицу, INSERT, UPDATE, DELETE; уровень рекурсии триггеров до 16 |
| Stored Procedures (хранимые процедуры) | хранимая процедура может иметь до 255 параметров, уровень рекурсии до 16 |
| Events (соединения) | предельное число соединений - 32,767 |
| Open databases (открытые базы) | максимальное число открытых баз данных - 32,767 |
| Locks (блокировки) | максимальное число блокировок - 2,147,483,647 |
| Open Objects (открытые объекты) | максимальное число открытых объектов - 2,147,483,647 |
| binary | 1-255 символов | фиксированный, символ представляется шестнадцатиричной цифрой, в описании присутствует 0x (0xFFAF) |
| varbinary | 1-255 символов | то же, что и binary, только переменной дины |
| char | 1-255 символов | фиксированный |
| varchar | 1-255 символов | только переменной дины |
| datetime | с 1 Января 1753 года по 31 Декабря 9999 года | длина 8 байт; по умолчанию 1 Января 1900, 12:00:0000; точность до 3.33 миллисекунды |
| smalldatetime | с 1 Января 1900 года по 31 Декабря 2079 года | длина 4 байта; точность 1 минута |
| decimal(p,s), numeric(p,s) | от -1038 - 1 до 1038 - 1; p - число значящих цифр, от 1 до 38; s -число знаков справа от точки, от 0 до p | длина от 2 до 17 байт, для совместимости с VB по умолчанию p полагается равным 28 |
| float(n) | от 2.23E-308 до 1.79E+308, число значящих цифр n от 1 до 15 | длина 8 байт |
| real | от 1.18E-38 до 3.40E+38 | длина 4 байта; то же, что и float(7) |
| int | от -2,147,483,648 до 2,147,483,647 | длина 4 байта |
| smallint | от -32,768 до 32,767 | длина 2 байта |
| tinyint | от 0 до 255 | длина 1 байт |
| money | от -$922,337,203,658,477.5808 до +$922,337,203,658,477.5807 | длина 8 байт |
| smallmoney | от -$214,748,3648 до +$214,748,3647 | длина 4 байта |
| bit | имеют значение 0 или 1 | минимальная длина 1 байт; несколько полей bit могут быть объединены в одном байте |
| timestamp | аналог binary(8) или varbinary(8) | не связано напрямую с системным временем, однако обеспечивается уникальность данного поля в базе в каждый момент времени; таблица не может иметь более одного столбца timestamp |
| text | длина до 2,147,483,647 символов | содержит текстовые данные, может использоваться в предложениях с LIKE; преобразовываться в char и varchar; если поле не NULL, или обновлялось, занимает в базе не менее 2 Кб |
| image | длина до 2,147,483,647 символов | содержит двоичные данные, преобразуется в binary или varbinary; если поле не NULL, или обновлялось, занимает в базе не менее 2 Кб |
| user-defined | всегда имеет базовый тип, по сути являет собой псевдоним базового типа | |
| synonyms | обеспечивают ANSI совместимый синтаксис описания переменных, например: character varying(n) для varchar(n) |