MS SQL Server
MS SQL Server — проприетарная реляционная СУБД Microsoft с диалектом T-SQL, работающая на Windows, Linux и в контейнерах.
Что такое MS SQL Server
Microsoft SQL Server (MS SQL, MSSQL) — проприетарная реляционная СУБД компании Microsoft. Полноценный сервер баз данных с транзакциями, репликацией и кластеризацией, исторически ядро корпоративного стека Microsoft вместе с Windows Server и .NET. С версии SQL Server 2017 работает не только на Windows, но и на Linux и в Docker.
Все написания — «ms sql», «mssql», «sql server», «Microsoft SQL Server» — обозначают один и тот же продукт. Не путайте его с «SQL-сервером» как общим названием любого сервера БД: SQL — это язык, MS SQL Server — конкретный продукт, который на нём говорит.
T-SQL
T-SQL (Transact-SQL) — диалект SQL в MS SQL Server. Стандартные SELECT/JOIN/GROUP BY работают как везде, но процедурные конструкции и синтаксические мелочи свои:
DECLARE @cutoff date = '2026-01-01';
SELECT TOP 10 c.name, SUM(o.total) AS revenue
FROM dbo.customers AS c
JOIN dbo.orders AS o ON o.customer_id = c.id
WHERE o.created_at >= @cutoff
GROUP BY c.name
ORDER BY revenue DESC;
Что отличается от PostgreSQL и MySQL: TOP N вместо LIMIT N, переменные через @, GETDATE() вместо NOW(), ISNULL() вместо COALESCE() (хотя COALESCE тоже поддерживается), схема dbo по умолчанию, квадратные скобки для идентификаторов.
Редакции
| Редакция | Назначение | Ограничения |
|---|---|---|
| Express | Небольшие приложения | Жёсткие лимиты на размер БД, RAM и ядра |
| Developer | Разработка и тесты | Функционально как Enterprise, но не для прода |
| Standard | Типовой продакшен | Урезаны HA и часть аналитики |
| Enterprise | Крупные системы | Полный набор возможностей |
Express распространяется бесплатно, Developer — бесплатно для непроизводственного использования, Standard и Enterprise лицензируются по ядрам либо по схеме «сервер + CAL». Лицензирование по ядрам — основная статья затрат при переезде в облако: лицензии считаются по vCPU виртуальной машины, поэтому просто «добавить ядер» дороже, чем на открытой СУБД. Актуальные лимиты и цены нужно смотреть в документации Microsoft — они меняются от версии к версии.
Инструменты
- SSMS (SQL Server Management Studio) — основная GUI-консоль под Windows: запросы, планы выполнения, обслуживание, права.
- Azure Data Studio — кроссплатформенная альтернатива с блокнотами.
- sqlcmd — консольный клиент, есть и под Linux.
- SQL Server Agent — планировщик регламентных заданий (бэкапы, обслуживание индексов). В Express отсутствует.
- SSIS / SSRS / SSAS — ETL, отчёты и OLAP-кубы поверх той же платформы.
Запуск в Docker
docker run -e "ACCEPT_EULA=Y" \
-e "MSSQL_SA_PASSWORD=StrongPass!23" \
-p 1433:1433 --name mssql \
-d mcr.microsoft.com/mssql/server:2022-latest
docker exec -it mssql /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P 'StrongPass!23' -C \
-Q "SELECT @@VERSION"
Порт 1433 — стандартный для MS SQL Server. Как и любую СУБД, наружу его не публикуют: 1433 с учёткой sa и слабым паролем — одна из самых сканируемых целей в интернете.
Отказоустойчивость и бэкапы
- Always On Availability Groups — группы доступности с репликами и автоматическим failover (редакции Standard/Enterprise, с разными ограничениями).
- Failover Cluster Instances — кластер поверх общего хранилища.
- Модели восстановления:
SIMPLE(только полные и разностные копии),FULL(плюс журнал транзакций и восстановление на точку во времени).
BACKUP DATABASE shop TO DISK = '/var/opt/mssql/backup/shop.bak' WITH COMPRESSION;
BACKUP LOG shop TO DISK = '/var/opt/mssql/backup/shop_log.trn';
Файл .bak — это дамп базы данных в терминологии MS SQL. В модели FULL без регулярного BACKUP LOG журнал транзакций растёт, пока не займёт весь диск — классическая авария на первом году эксплуатации.
Связанные термины
- СУБД — класс, к которому относится MS SQL Server
- SQL — язык, диалектом которого является T-SQL
- PostgreSQL — открытая альтернатива при миграции с MSSQL
- Реляционные и NoSQL БД — модель данных MS SQL Server
- Репликация — основа Always On
- Резервное копирование — модели восстановления и бэкапы
Готовы запустить GPU-задачу?
Запустить GPU-сервер