Доступ к SQL Server настраивается в два слоя. Сначала создается логин на уровне сервера, чтобы пользователь или приложение могли подключиться к экземпляру SQL Server. Затем внутри нужной базы создается пользователь и ему выдаются права
Если настроить только логин, человек может попасть на сервер, но не получить доступ к нужной базе. Если создать только пользователя базы без серверного логина, подключение тоже не заработает
Что нужно проверить перед настройкой
Перед созданием прав уточните четыре вещи:
- к какому серверу подключаемся
- какая база нужна пользователю или приложению
- какой способ входа используется: Windows Authentication или SQL Server Authentication
- какие действия разрешены: только чтение, чтение и запись, администрирование
Для учебных задач не выдавайте sysadmin. Это слишком широкие права, которые дают полный контроль над сервером
Как создать логин SQL Server
Пример для SQL Server Authentication:
CREATE LOGIN app_reader
WITH PASSWORD = 'StrongPassword_ChangeMe_2026';
После этого логин существует на уровне сервера, но еще не имеет нормальных прав внутри базы
Создадим пользователя в конкретной базе:
USE sales_db;
GO
CREATE USER app_reader
FOR LOGIN app_reader;
GO
Теперь можно выдать роль только для чтения:
ALTER ROLE db_datareader
ADD MEMBER app_reader;
Такой пользователь сможет читать таблицы, но не сможет менять данные
Как выдать доступ на чтение и запись
Если приложению нужно читать и менять данные:
USE sales_db;
GO
ALTER ROLE db_datareader
ADD MEMBER app_user;
ALTER ROLE db_datawriter
ADD MEMBER app_user;
Это простой вариант, но он не всегда самый точный. В рабочих системах лучше выдавать права на конкретные схемы, таблицы или процедуры
Например, доступ только к одной схеме:
GRANT SELECT, INSERT, UPDATE
ON SCHEMA::crm
TO app_user;
Так проще контролировать, что именно может делать приложение
Как включить сетевой доступ
Если подключение идет с другого компьютера, одних прав в базе мало. SQL Server должен принимать сетевые подключения
Проверьте:
- служба SQL Server запущена
- протокол TCP/IP включен в SQL Server Configuration Manager
- указан правильный порт, чаще всего
1433 - firewall разрешает входящие подключения
- имя сервера и экземпляра указаны правильно
Для именованного экземпляра строка подключения может выглядеть так:
SERVER-NAME\SQLEXPRESS
Для подключения по порту:
SERVER-NAME,1433
Как проверить доступ
Откройте SSMS и подключитесь под новым пользователем. Затем выполните:
SELECT DB_NAME() AS current_database;
SELECT TOP 5 *
FROM sys.tables;
Если пользователь подключился, но не видит таблицы, проблема в правах внутри базы. Если не подключается вообще, смотрите логин, пароль, режим аутентификации, TCP/IP и firewall
Мини-практика
Сделайте учебного пользователя только для чтения:
CREATE LOGIN demo_reader
WITH PASSWORD = 'DemoReader_ChangeMe_2026';
USE test_db;
GO
CREATE USER demo_reader
FOR LOGIN demo_reader;
ALTER ROLE db_datareader
ADD MEMBER demo_reader;
После проверки попробуйте выполнить SELECT, а затем INSERT. Чтение должно работать, запись должна быть запрещена
Частые ошибки
- Создать логин, но не создать пользователя внутри базы
- Выдать права в одной базе, а подключаться к другой
- Включить SQL-логин, но забыть про смешанный режим аутентификации
- Открыть порт, но не включить TCP/IP
- Выдать
sysadmin, чтобы быстрее заработало, и получить риск для всей базы - Настроить доступ под личной учетной записью вместо отдельного пользователя приложения
Что почитать дальше по SQL
Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:
- Как настроить SQL Server для 1С 8.3: база, доступ и проверка
- SQL Server Configuration Manager: где открыть и что в нем смотреть
- SQL Server Management Studio скачать: как правильно установить SSMS
- SQL Server Management Studio: как подключиться к локальному серверу



