Перейти до вмісту

SQL Server

реляційна система баз даних від Microsoft

Що це таке

SQL Server, який часто записують як MSSQL або MS SQL, — це реляційна система керування базами даних від Microsoft: серверна програма, що зберігає дані в таблицях, стежить за правилами між ними й відповідає застосункам, які звертаються до неї мовою Transact-SQL, або T-SQL, діалектом SQL від Microsoft. Клієнт підключається до екземпляра, тобто однієї запущеної копії рушія, і працює всередині однієї з баз даних, які цей екземпляр обслуговує. На диску кожна така база даних складається щонайменше з двох файлів: одного для даних і одного для журналу транзакцій.

Ядро називається Database Engine — це служба, яка зберігає, обробляє й захищає дані. Її встановлюють на Windows або Linux, у Linux-контейнер чи на віртуальну машину. Підтримка Linux з’явилася в SQL Server 2017 (14.x) з тим самим Database Engine, що й на Windows, і відтоді кожен випуск підтримує Red Hat Enterprise Linux та Ubuntu. Той самий рушій працює і під кількома хмарними службами Microsoft, серед них Azure SQL Database, Azure SQL Managed Instance та SQL database у Microsoft Fabric.

Випуски називають за роком, а всередині нумерують: 2017 — це 14.x, 2019 — 15.x, 2022 — 16.x, а SQL Server 2025, підтримка якого почалася 18 листопада 2025 року, — 17.x. Навколо рушія є й інші служби. Integration Services (SSIS) збирає пакети для видобування, перетворення й завантаження даних у сховища даних, а SQL Server Agent запускає завдання за розкладом. Починаючи з SQL Server 2025, локальна звітність зосереджена в Power BI Report Server, а Data Quality Services і Master Data Services виходять зі складу продукту; випуски 2022 і старші їх зберігають.

Редакції проводять комерційні межі. Для SQL Server 2022 це Enterprise, Standard, Web, Express (безкоштовна), Developer та Evaluation. Дві останні мають увесь набір можливостей Enterprise: Developer ліцензовано лише для систем розробки й тестування, а Evaluation працює 180 днів. SQL Server 2025 перекроює список: редакція Web закінчується на 2022, Developer ділиться на Enterprise Developer і Standard Developer, а Express розширюється.

Чому це важливо

Версія й редакція разом визначають, наскільки великим може бути сервер, які можливості він має і як довго Microsoft його виправлятиме.

Розмір і можливості залежать від редакції. Express у SQL Server 2022 використовує менше з двох значень, один сокет або чотири ядра, щонайбільше 1 410 МБ пам’яті для буферного пулу й до 10 ГБ у кожній базі даних. У SQL Server 2025 межа Express зростає до 50 ГБ, а обмеження на процесор і пам’ять лишаються ті самі. Standard у 2022 використовує менше з чотирьох сокетів або 24 ядер і 128 ГБ буферного пулу; у 2025 це 32 ядра й 256 ГБ. Enterprise обмежує лише операційна система. SQL Server Agent постачається з Enterprise, Standard і, у 2022, з Web. Express обходиться без нього, тож безкоштовному екземпляру, якому потрібні нічні резервні копії, знадобиться планувальник поза продуктом.

Графік виправлень залежить від версії. За політикою Fixed Lifecycle Policy від Microsoft кожен випуск отримує щонайменше десять років підтримки: п’ять років основної підтримки з оновленнями функцій, продуктивності, масштабованості й безпеки та п’ять років розширеної підтримки лише з оновленнями безпеки. Для SQL Server 2019 основна підтримка тривала з листопада 2019 до кінця лютого 2025 року, а розширена триває до січня 2030 року. Перелік оновлень Microsoft називає CU32 з лютого 2025 року останнім накопичувальним оновленням для 2019, а відтоді поверх нього виходять випуски безпеки. SQL Server 2022 має основну підтримку до січня 2028 року й розширену до січня 2033 року, а SQL Server 2025 переходить на розширену підтримку в січні 2031 року й завершує її в січні 2036 року.

Продукт доходить і до тих, хто ніколи не запускає його в продакшні, бо дані подорожують у його форматах. Файл .bak — це резервна копія SQL Server, і прочитати його можна, лише відновивши в екземплярі, як і зробив один із проєктів нижче.

Як це виглядає на практиці

Десять серверів баз даних у компанії середнього розміру входили в роботу DevOps-інженера: PostgreSQL 14 і MS SQL Server 2019 встановлено на інстансах VPS з Ubuntu 20.04 LTS. Резервні копії робили pg_dump для PostgreSQL і завдання SQL Server Agent для MS SQL, з політиками строків збереження та офсайт-зберіганням. Prometheus і Grafana стежили за серверами, а результатом стали 99,9% безвідмовної роботи на всіх десяти.

З SQL Server також читають. Внутрішні аналітичні дашборди й зовнішні Python API для клієнтів і партнерів отримували дані з віддаленого сховища за IPsec VPN як стиснуті архіви з файлами Parquet, CSV та .bak. Резервні копії .bak відновлювалися в локальному екземплярі MSSQL Server через RESTORE DATABASE, а цілісність схеми перевірялася. Проміжні завантаження йшли через bcp, psql і SSIS залежно від формату джерела, а процедури T-SQL і PL/pgSQL очищували й збагачували рядки, перш ніж ті вирушали до BigQuery. Шість таких пайплайнів скоротили роботу з понад 3 годин ручної праці до менш ніж 20 хвилин наскрізно й перевели дані з щотижневої на щоденну синхронізацію.

Від SQL Server ще й відходять. Застосунок географічних карт, що працював на застарілій базі даних MSSQL без нативної геопросторової індексації, перевели з MSSQL на PostgreSQL із розширенням PostGIS. Понад 50 мільйонів просторових записів пройшли через ETL до EPSG:4326, на стовпці geometry та geography лягли індекси GiST і SP-GiST. Просторовий запит, на який MSSQL у середньому витрачав 2,5 секунди, після переходу вкладався менш ніж у 250 мілісекунд, а навантаження на CPU бекенду знизилося на 65%.

Де виникають проблеми

Кожна з цих проблем виникає на межі: між версіями, між машинами або між резервною копією та першим її використанням.

Резервна копія рухається вперед за версіями, і тільки вперед. Резервну копію можна відновити на тій версії SQL Server, що її записала, або на новішій. База даних зі старішої версії під час відновлення автоматично оновлюється, і це оновлення одностороннє. Тому файл .bak, записаний сервером 2022, потребує екземпляра 2022 або 2025, а екземпляр 2019 його відхилить. Перевірте, яка версія записала файл, перш ніж будувати екземпляр, що його читатиме.

Відновлення шукає папки старого сервера. Резервна копія пам’ятає, де лежали її файли даних і журналу на сервері-джерелі, а кожна версія SQL Server має свій шлях за замовчуванням. На іншій машині спершу виведіть логічні імена файлів, а тоді розмістіть кожен через MOVE:

RESTORE FILELISTONLY
FROM DISK = '/srv/incoming/sales.bak';

RESTORE DATABASE Sales
FROM DISK = '/srv/incoming/sales.bak'
WITH MOVE 'Sales_Data' TO '/srv/mssql/data/Sales.mdf',
     MOVE 'Sales_Log' TO '/srv/mssql/data/Sales_log.ldf';

Резервні копії накопичуються неперевіреними. Власна сторінка Microsoft на цю тему каже прямо: стратегія відновлення з’являється лише тоді, коли резервні копії перевірено. Відновлюйте копію на тестовій системі за розкладом і запускайте на ній DBCC CHECKDB. Контрольні суми резервних копій виявляють проблеми самого носія.

Файл масового копіювання приходить без своєї таблиці. Файли, записані bcp, містять рядки й нічого про їхню форму: ні схеми, ні відомостей про формат. Якщо вихідна таблиця змінилася чи зникла, повторний імпорт вимагає ідентичного визначення таблиці або файлу формату. Microsoft радить нативний формат (-n) між двома екземплярами SQL Server і символьний формат (-c), коли дані переходять в іншу систему.

Безкоштовна редакція заповнюється. Express пасує для навчання й невеликих застосунків, а 10 ГБ на базу даних у 2022 чи 50 ГБ у 2025 — скромний запас для всього, що зберігає історію. Плануйте перехід на ліцензовану редакцію й бюджет на нього ще до того, як база даних дійде до межі.

Старий випуск працює далі лише на оновленнях безпеки. Сервер на SQL Server 2019 досі працює і до січня 2030 року отримує тільки оновлення безпеки. Екземпляри на VPS з Ubuntu, описані вище, працювали на 2019 з 2022 по 2024 рік, у межах основної підтримки. Оскільки резервні копії відновлюються лише вперед, шлях із такого випуску — відновлення на новішому екземплярі, а потім перевірка всього, що з ним працює.

Що почитати далі

  • What is SQL Server? — огляд від Microsoft: рушій, де його можна встановити, і служби навколо нього.
  • SQL Server 2019 lifecycle — дати початку, основної та розширеної підтримки випуску, на якому працював проєкт із практичного розділу.
  • Editions and supported features of SQL Server 2025 — межі процесора, пам’яті й розміру бази даних для кожної редакції та примітки про зміни після 2022.
  • What is SQL Server on Linux? — випуск, з якого почалася підтримка Linux, і дистрибутиви для кожного випуску.
  • RESTORE statements (Transact-SQL) — повний синтаксис, MOVE і FILELISTONLY та правила відновлення між версіями.
  • bcp utility — масове копіювання в Database Engine і з нього, формати даних і файли формату.

Словник