Databases

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 / SSASETL, отчёты и 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 журнал транзакций растёт, пока не займёт весь диск — классическая авария на первом году эксплуатации.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер