Создание администратора SQL Server Express через скрипт
Быстрый ответ
Для быстрой организации пользователя в SQL Server в первую очередь создайте вход в систему, ассоциируйте его с пользователем базы данных и определите соответствующие роли для обеспечения доступа. Используйте приведенный ниже SQL-скрипт:
-- Создаем вход в систему на сервере
CREATE LOGIN UserLogin WITH PASSWORD = 'UserPassword!';
-- Связываем вход с пользователем в конкретной базе данных
USE DatabaseName;
CREATE USER UserName FOR LOGIN UserLogin;
-- Назначаем пользователю базовые роли для работы с данными
EXEC sp_addrolemember 'db_datareader', 'UserName';
EXEC sp_addrolemember 'db_datawriter', 'UserName';
Замените значения UserLogin
, UserPassword!
, DatabaseName
и UserName
на выбранные вами параметры. При необходимости добавьте дополнительные роли для настройки доступа.
[AsideBanner]
Прежде чем старт: Проверки перед созданием пользователя
Перед созданием нового пользователя убедитесь, что под таким же именем и входом он ещё не существует. Это подобно проверке наличия парашюта перед прыжком.
-- "Парашют у меня есть!? 👀"
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'UserLogin')
BEGIN
-- Все нормально, можно создавать новый вход
END
USE DatabaseName;
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'UserName')
BEGIN
-- Путь свободен для создания пользователя в базе данных
END
Расстилай ковровую дорожку: Роли и разрешения
Восприятие разницы между серверными и базовыми ролями столь же важно, как понимание разницы между Оскаром и Золотым глобусом. Для определения серверных ролей применяйте sp_addsrvrolemember
, для ролей на уровне базы данных – sp_addrolemember
.
-- Назначаем пользователю роль sysadmin
EXEC sp_addsrvrolemember 'UserLogin', 'sysadmin';
-- В более новых версиях SQL Server применяйте ALTER SERVER ROLE
ALTER SERVER ROLE sysadmin ADD MEMBER UserLogin;
Двойной испытание: Смешанная аутентификация и доступ
Если приложение требует разного вида аутентификации, активируйте режим смешанной аутентификации. Убедитесь в правильной настройке ролей сервера, доступности TCP/IP и разрешении портов фаервола для удаленного доступа.
Строгий и красивый код: Обслуживаемость и масштабируемость
Использование переменных в SQL-скриптах облегчает внесение изменений. Посмотрите на пример:
DECLARE @LoginName NVARCHAR(50) = 'UserLogin';
DECLARE @Password NVARCHAR(50) = 'UserPassword!';
DECLARE @UserName NVARCHAR(50) = 'UserName';
DECLARE @DbName NVARCHAR(50) = 'DatabaseName';
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'UserLogin')
BEGIN
CREATE LOGIN [@LoginName] WITH PASSWORD = @Password;
END
USE [@DbName];
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'UserName')
BEGIN
CREATE USER [@UserName] FOR LOGIN [@LoginName];
END
Визуализация
Представьте себе процесс создания нового пользователя как подбор актеров для космического блокбастера:
Вселенная базы данных 🪐
- Админ: 👑
- Только чтение:🤫
- Запись: ✍️
Добавим теперь новую звезду:
-- Звезда присоединяется к команде:
CREATE USER InterstellarActor FOR LOGIN GalacticLogin;
GRANT SELECT ON GALAXY TO InterstellarActor;
Подготовка к старту! 🚀 Наш новый участник готов сиять в своей роли.
Назначенные роли:
- Админ: 👑 (Полный контроль)
- Только чтение: 🤫 (Тихий наблюдатель)
- Запись: ✍️ (Создание новых историй)
- Межзвездный Актер: 🎭 (Готов покорять космические просторы!)
В бесконечность и дальше: Модификация доступа пользователя под будущее
Так же, как киноиндустрия приспосабливается к новым условиям, SQL Server предлагает использовать ALTER USER
и ALTER LOGIN
для гибкого регулирования доступа.
Режиссерская версия: Настройка разрешений с точностью до мелочей
Уделяйте внимание к настройке разрешений для выполнения функций и хранимых процедур, используя оператор GRANT
.
-- "Свет. Камера. Процедура!"
GRANT EXECUTE ON Schema::dbo TO UserName;
Съемки павильоне: Учет сетевых факторов
Для успешной организации удаленного доступа в SQL Server настройте сетевую среду, включая порты и фаерволы.
Полезные материалы
- CREATE USER (Transact-SQL) – SQL Server | Microsoft Learn — Официальное руководство Microsoft по созданию пользователей SQL Server.
- SQL Server: CREATE USER statement — TechOnTheNet — Пошаговая инструкция по написанию сценария создания пользователя SQL Server.
- [Questions tagged [sql-server+create-user] – Stack Overflow](https://stackoverflow.com/questions/tagged/sql-server+create-user) — Обсуждение вопросов создания пользователя в SQL Server.
- [Questions tagged [sql-server+user-management] – Database Administrators Stack Exchange](https://dba.stackexchange.com/questions/tagged/sql-server+user-management) — Опыт по управлению пользователями SQL Server.
- SQL Server Security Basics – Creating Logins – SQL Authority — Основы безопасности и советы по созданию входов в систему в SQL Server.
- SQL Server Security Questions – SQL Server Central Forums — Обсуждения и ответы на вопросы по безопасности SQL Server.