SQL Server Management Studio (SSMS) это бесплатная среда для управления SQL Server, которая скачивается отдельно с сайта Microsoft. Установка занимает 5-10 минут, но правильная настройка SSMS заметно ускоряет работу DBA и разработчика (а неправильная превращает каждый рабочий день в борьбу с интерфейсом).
Скачивание и установка SSMS
Короче, SSMS больше не идёт в комплекте с SQL Server. Качается отдельно.
- Зайдите на
learn.microsoft.com/sql/ssms/download-sql-server-management-studio-ssms - Скачайте последнюю версию (SSMS 20.x на данный момент)
- Запустите установщик
- Нажмите Install. Всё.
Тут такое дело: SSMS можно ставить на рабочую станцию, не обязательно на сам сервер. На самом деле лучше не ставить SSMS на продакшен-сервер. Подключайтесь удалённо. Каждое лишнее приложение на серверe это потенциальная уязвимость и расход ресурсов.
Размер установщика около 500 МБ. Требуется .NET Framework 4.7.2+. На чистой Windows 10/11 обычно уже есть.
# Тихая установка SSMS через командную строку
# Для автоматического развёртывания на несколько машин
SSMS-Setup-RUS.exe /install /quiet /norestart
# Установка в конкретную папку
SSMS-Setup-RUS.exe /install /quiet /norestart SSMSInstallRoot="D:SSMS"
# Проверяем установленную версию после установки
reg query "HKLMSOFTWAREMicrosoftMicrosoft SQL Server Management Studio" /v "Version"Системные требования SSMS 20
Вот в чём прикол: многие думают, что для SSMS нужен мощный комп. Нет. Но есть минимальные требования, которые стоит знать.
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| ОС | Windows 10 1607+ | Windows 11 |
| CPU | 1.8 GHz | Quad-core 2.0+ GHz |
| RAM | 2 ГБ | 8 ГБ |
| Диск | 2 ГБ | SSD, 5+ ГБ |
| .NET | 4.7.2 | Последняя версия |
| Разрешение | 1280×720 | 1920×1080+ |
Если честно, на 2 ГБ RAM SSMS будет тормозить при работе с большими запросами. 8 ГБ минимум для комфортной работы, 16 ГБ если держите много вкладок открытыми (а DBA всегда держат много вкладок открытыми).
Первое подключение к SQL Server
Запускаем SSMS, появляется окно подключения.
- Server type: Database Engine
- Server name: имя сервера (localhost для локального, или IP/hostname для удалённого)
- Authentication: Windows Authentication (если в домене) или SQL Server Authentication
Если SQL Server на именованном экземпляре, формат подключения SERVERINSTANCE. Например, SQL01MSSQLSERVER2022. Многие забывают указать имя экземпляра и не могут подключиться. Знаете что? Это самая частая проблема новичков.
Для подключения по нестандартному порту: SERVER,PORT (именно запятая, не двоеточие). Например, 10.0.0.50,1434.
А ещё есть нюанс с шифрованием. В SSMS 20 по умолчанию включено шифрование подключения. Если у SQL Server нет SSL-сертификата, вы увидите ошибку. Решения два: установить сертификат (правильный путь) или поставить галочку «Trust server certificate» (ленивый путь, не для прода).
Интерфейс SSMS: что где находится
SSMS выглядит перегруженным, по факту это правда. Но основные элементы простые:
- Object Explorer (слева) дерево объектов: базы, таблицы, хранимые процедуры
- Query Editor (центр) окно для написания и выполнения SQL-запросов
- Properties (справа) свойства выбранного объекта
- Activity Monitor текущая активность на сервере
- Registered Servers (Ctrl+Alt+G) список серверов для быстрого подключения
- Template Explorer (Ctrl+Alt+T) шаблоны SQL-запросов
Мой знакомый Андрей, разработчик из Новосибирска, первый раз открыл SSMS и растерялся. Куча вкладок, панелей, менюшек. На его Lenovo ThinkPad T480 экран маленький, и половина интерфейса не помещалась. Но через неделю привык и теперь не представляет работу без SSMS.
Настройки, которые стоит изменить сразу
Стандартные настройки SSMS не идеальны. Давайте поправим. Грубо говоря, 10 минут настройки сэкономят вам часы мучений.
Включаем нумерацию строк
Tools → Options → Text Editor → Transact-SQL → General → Line numbers. Без номеров строк искать ошибки больно. Когда SQL Server говорит «ошибка в строке 47», а у вас нет номеров… ну вы поняли.
Меняем шрифт
Tools → Options → Environment → Fonts and Colors. Consolas 11pt или Cascadia Code. Дефолтный шрифт мелковат, а Cascadia Code ещё и лигатуры поддерживает (кстати, не все DBA ценят лигатуры, дело вкуса).
Включаем результаты в виде сетки
Query → Results To → Results to Grid. Или Ctrl+D. Результаты в текстовом виде читать сложнее, особенно когда колонок больше пяти.
Настраиваем автосохранение
Tools → Options → Environment → AutoRecover. Включите AutoRecover и задайте интервал 5 минут. SSMS иногда падает (увы). Терять написанный запрос на 200 строк из-за краша больно.
Увеличиваем количество строк в результатах
Tools → Options → Query Results → SQL Server → Results to Grid → Maximum Characters Retrieved. По умолчанию 65535 символов для XML. Для работы с большими XML увеличьте до 2 МБ.
Отключаем подсветку текущей строки
Tools → Options → Text Editor → General → Highlight current line. Некоторые находят подсветку текущей строки раздражающей. Я лично предпочитаю включённой, но это дело вкуса.
Настраиваем подключение по умолчанию
Tools → Options → Query Execution → SQL Server → Advanced. Тут можно установить дефолтный MAXDOP, QUERY_GOVERNOR_COST_LIMIT и другие параметры для новых окон запросов.
Полезные горячие клавиши
-- Основные комбинации клавиш в SSMS
-- F5 или Ctrl+E: выполнить запрос (или выделенный фрагмент)
-- Ctrl+R: показать/скрыть панель результатов
-- Ctrl+L: показать предполагаемый план выполнения
-- Ctrl+M: включить фактический план выполнения
-- Ctrl+Shift+U: перевести выделенный текст в UPPER CASE
-- Ctrl+K, Ctrl+C: закомментировать выделенные строки
-- Ctrl+K, Ctrl+U: раскомментировать
-- Ctrl+T: результаты в текстовом виде
-- Ctrl+D: результаты в виде сетки
-- Alt+F1: sp_help для выделенного объекта
-- Ctrl+Shift+M: подстановка параметров шаблона
-- Ctrl+J: список IntelliSense (автодополнение)Кстати, Alt+F1 это настоящий лайфхак. Выделяете имя таблицы, жмёте Alt+F1, и получаете описание всех колонок, индексов, ключей. Экономит кучу времени. На самом деле можно переназначить эту клавишу на свою хранимую процедуру (через Tools → Options → Environment → Keyboard), но стандартный sp_help достаточно удобен.
Шаблоны запросов: скрытая сила SSMS
Мало кто пользуется Template Explorer, а зря. Откройте его через Ctrl+Alt+T. Там сотни готовых шаблонов для типичных задач DBA:
- Создание и изменение баз данных
- Управление пользователями и ролями
- Настройка Always On Availability Groups
- Бэкап и восстановление
- Мониторинг производительности
А ещё можно создавать свои шаблоны. Написали крутой запрос для мониторинга? Сохраните как шаблон, и он всегда будет под рукой. По факту у каждого опытного DBA есть папка с личными шаблонами, которые он переносит с машины на машину годами.
Полезные расширения и плагины
SSMS поддерживает расширения. Вот полезные:
- Redgate SQL Prompt платный, но лучший IntelliSense для SQL. Автодополнение на стероидах. Форматирование, переименование, подсказки
- SentryOne Plan Explorer бесплатный анализатор планов выполнения, намного удобнее встроенного
- SSMSBoost табы, избранные серверы, история запросов
- ApexSQL Complete бесплатная альтернатива SQL Prompt (функций меньше, но для начала хватит)
Без SQL Prompt можно обойтись, но с ним производительность написания запросов растёт раза в два. Форматирование, автодополнение, подсказки. Особенно когда баз много и таблиц сотни. Тут такое дело: если ваша компания не готова платить за SQL Prompt, попробуйте ApexSQL Complete. Бесплатный, и основные вещи (автодополнение, форматирование) покрывает.
Работа с несколькими серверами
Если вы DBA и обслуживаете несколько серверов (а обычно так и есть), Registered Servers это must have.
-- Создание группы серверов и регистрация через T-SQL
-- На практике проще через GUI:
-- View -> Registered Servers (Ctrl+Alt+G)
-- Правой кнопкой -> New Server Registration
-- Но вот что реально полезно: Multi-Server Query
-- Выделяете группу серверов, правая кнопка, New Query
-- Запрос выполняется одновременно на всех серверах группы!
-- Например, проверяем версию SQL Server на всех серверах
SELECT @@SERVERNAME AS ServerName, @@VERSION AS SQLVersion
-- Или проверяем размер баз на всех серверах одновременно
SELECT
@@SERVERNAME AS ServerName,
DB_NAME(database_id) AS DatabaseName,
SUM(size * 8 / 1024) AS SizeMB
FROM sys.master_files
GROUP BY database_idЗнаете что? Multi-Server Query это одна из тех фич, о которой не все знают, но которая экономит часы работы. Вместо подключения к каждому серверу по очереди вы отправляете запрос на 10 серверов одним кликом.
Альтернативы SSMS
SSMS не единственный инструмент для работы с SQL Server.
- Azure Data Studio бесплатный, кроссплатформенный (Windows, Mac, Linux), легковесный. Для простых задач и ноутбуков. Но не все функции SSMS есть (нет Activity Monitor, нет полноценного Object Explorer)
- DBeaver бесплатный, работает с любыми СУБД. Если кроме SQL Server есть PostgreSQL или MySQL
- DataGrip от JetBrains, платный, мультибазовый. Для разработчиков, привыкших к IntelliJ. Автодополнение на уровне SQL Prompt
Для администрирования SQL Server ничего лучше SSMS пока нет. Для разработки подойдёт и Azure Data Studio.
Елена, DBA из московского банка, использует SSMS на рабочей станции (Dell OptiPlex 7090) для администрирования, и Azure Data Studio на MacBook для быстрых запросов из дома. Говорит, связка идеальная. А ещё она держит DBeaver для работы с PostgreSQL базами, которые тоже есть в инфраструктуре банка.
Подключение к удалённому SQL Server
Для удалённого подключения нужно:
- Включить TCP/IP протокол в SQL Server Configuration Manager
- Открыть порт 1433 (или кастомный) на файрволе
- Если именованный экземпляр, запустить SQL Server Browser Service
- Убедиться, что SQL Server слушает на нужном IP (а не только на 127.0.0.1)
# Открываем порт 1433 для удалённого подключения
New-NetFirewallRule -DisplayName "SQL Server" `
-Direction Inbound -Protocol TCP `
-LocalPort 1433 -Action Allow
# Для SQL Server Browser (именованные экземпляры)
New-NetFirewallRule -DisplayName "SQL Server Browser" `
-Direction Inbound -Protocol UDP `
-LocalPort 1434 -Action Allow
# Проверяем, что SQL Server слушает на TCP
# В SQL Server Configuration Manager:
# SQL Server Network Configuration -> Protocols -> TCP/IP -> Properties
# Вкладка IP Addresses: IP All -> TCP Port должен быть 1433Типичные проблемы с SSMS и их решения
Кстати, вот список проблем, с которыми сталкивается каждый второй пользователь SSMS:
- SSMS зависает при открытии. Удалите файл настроек:
%AppData%MicrosoftSQL Server Management Studio20.0SqlStudio.bin. Все настройки сбросятся, но SSMS начнёт работать - IntelliSense не работает. Ctrl+Shift+R для обновления кэша IntelliSense. Или Edit → IntelliSense → Refresh Local Cache
- Долго открывается Object Explorer. Слишком много баз на сервере. Используйте фильтр: правая кнопка на «Databases» → Filter → Settings
- SSMS падает при работе с планами выполнения. Обновите SSMS до последней версии. Microsoft постоянно фиксит такие баги
Где купить лицензию SQL Server
SSMS бесплатный, а вот SQL Server нет (кроме Express и Developer). Лицензии SQL Server 2022 Standard и Enterprise, а также Windows Server для хостинга можно купить в keytrust24.store. Моментальная доставка ключа.
Ну и помните: SSMS это только инструмент управления. Без самого SQL Server он бесполезен. Как руль без машины. На самом деле SSMS можно использовать и без локального SQL Server, подключаясь к удалённым серверам. Но хотя бы один SQL Server где-то должен быть.
Полезные запросы для ежедневной работы в SSMS
Напоследок, вот набор запросов, которые каждый DBA и разработчик должен иметь под рукой. Сохраните их как шаблоны в Template Explorer.
-- Размер всех баз данных на сервере
-- Полезно для ежедневного мониторинга
SELECT
DB_NAME(database_id) AS DatabaseName,
type_desc AS FileType,
name AS LogicalName,
physical_name AS PhysicalPath,
size * 8 / 1024 AS SizeMB,
max_size * 8 / 1024 AS MaxSizeMB
FROM sys.master_files
ORDER BY size DESC
-- Топ-10 тяжёлых запросов по CPU
-- Когда сервер тормозит, начинайте с этого
SELECT TOP 10
qs.total_worker_time / qs.execution_count AS AvgCPU,
qs.execution_count,
SUBSTRING(qt.text, qs.statement_start_offset/2 + 1,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2
ELSE qs.statement_end_offset END - qs.statement_start_offset) / 2 + 1) AS QueryText
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY AvgCPU DESC
-- Текущие активные сессии (кто что делает прямо сейчас)
SELECT
s.session_id, s.login_name, s.host_name,
r.status, r.command, r.wait_type,
DB_NAME(r.database_id) AS DatabaseName,
t.text AS CurrentQuery
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE s.is_user_process = 1
ORDER BY r.cpu_time DESCПо факту, эти три запроса покрывают 80% ежедневных задач мониторинга. Размер баз, тяжёлые запросы, активные сессии. Сохраните их как Registered Queries или шаблоны, и они всегда будут на расстоянии пары кликов.
SSMS для разработчиков: советы
Если вы не DBA, а разработчик, который иногда работает с SQL Server, вот что стоит знать. При работе с запросами используйте Include Actual Execution Plan (Ctrl+M) перед выполнением. Это покажет, как SQL Server выполняет ваш запрос: какие индексы использует, где сканирует таблицу целиком, где узкое горлышко.
Вот лайфхак для разработчиков: нажмите Ctrl+L (без выполнения запроса) для просмотра предполагаемого плана. Так вы увидите проблему до того, как запрос начнёт молотить продакшн-базу на миллион строк. Особенно полезно для новых запросов, когда вы не уверены в их эффективности.
И последнее. Если вы только начинаете работать с SSMS, не пытайтесь выучить все функции сразу. Начните с Object Explorer и Query Editor. Научитесь писать SELECT, INSERT, UPDATE, DELETE. Потом добавьте планы выполнения. Потом Activity Monitor. Потом шаблоны и скрипты. Грубо говоря, SSMS это инструмент, который растёт вместе с вашими навыками. Через полгода вы будете использовать его совершенно иначе, чем в первый день. Мой знакомый Виктор, джуниор-разработчик на Dell Inspiron 15 с i5-1235U, начал с простых SELECT-запросов. Через год он уже писал сложные хранимые процедуры, анализировал планы выполнения и оптимизировал запросы. SSMS всё это время был его единственным инструментом.



