Сценарий SQL Server для создания нового пользователя


Я хочу написать скрипт для создания admin пользователей ( с abcd пароль) в SQL Server Express. Также я хочу назначить этого пользователя admin полные права.

5 69

5 ответов:

основываясь на вашем вопросе, я думаю, что вы можете быть немного смущены разницей между пользователей и логин. А логин это учетная запись на SQL Server в целом-кто-то, кто может войти на сервер и у кого есть пароль. А пользователей это логин доступ к определенной базе данных.

создание логин легко и должно (очевидно) быть сделано перед созданием пользователей учетная запись для входа в определенную базу данных:

CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO

вот как вы создаете пользователей с привилегиями db_owner с помощью логин вы только что заявили:

Use YourDatabase;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName')
BEGIN
    CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
    EXEC sp_addrolemember N'db_owner', N'NewAdminName'
END;
GO

теперь Логинов немного более жидкие, чем я заставляю его казаться выше. Например, учетная запись будет создана автоматически (в большинстве установок SQL Server) для учетной записи администратора Windows при установке базы данных. В большинстве ситуации, я просто использую это, когда я администрирую базу данных (она имеет все привилегии).

однако, если вы собираетесь получить доступ к SQL Server из приложения, то вам нужно будет настроить сервер для "смешанного режима" (как Windows, так и SQL logins) и создать имя Входа, как показано выше. Затем вы" предоставите " привилегии для этого входа SQL на основе того, что необходимо для вашего приложения. Смотрите здесь для получения дополнительной информации.

обновление: Аарон указывает на использование процедуры sp_addsrvrolemember для назначения подготовленной роли учетной записи входа. Это хорошая идея - быстрее и проще, чем вручную предоставления льгот. Если вы google это вы увидите много ссылок. Тем не менее, вы должны понимать разницу между логином и пользователем.

полные права администратора всего сервера или конкретной базы данных? Я думаю, что остальные ответили за базу данных, но для сервера:

USE [master];
GO
CREATE LOGIN MyNewAdminUser 
    WITH PASSWORD    = N'abcd',
    CHECK_POLICY     = OFF,
    CHECK_EXPIRATION = OFF;
GO
EXEC sp_addsrvrolemember 
    @loginame = N'MyNewAdminUser', 
    @rolename = N'sysadmin';

возможно, вам придется отказаться от параметров CHECK_ в зависимости от того, какую версию SQL Server Express вы используете (это почти всегда полезно включить эту информацию в свой вопрос).

Если вы хотите создать универсальный скрипт, вы можете сделать это с помощью инструкции Execute с заменой вашего имени пользователя и имени базы данных

Declare @userName as varchar(50); 
Declare @defaultDataBaseName as varchar(50);
Declare @LoginCreationScript as varchar(max);
Declare @UserCreationScript as varchar(max);
Declare @TempUserCreationScript as varchar(max);
set @defaultDataBaseName = 'data1';
set @userName = 'domain\userName';
set @LoginCreationScript ='CREATE LOGIN [{userName}]
FROM WINDOWS 
WITH DEFAULT_DATABASE ={dataBaseName}'

set @UserCreationScript ='
USE {dataBaseName}
CREATE User [{userName}] for LOGIN [{userName}];
EXEC sp_addrolemember ''db_datareader'', ''{userName}'';
EXEC sp_addrolemember ''db_datawriter'', ''{userName}'';
Grant Execute on Schema :: dbo TO [{userName}];'
/*Login creation*/
set @LoginCreationScript=Replace(Replace(@LoginCreationScript, '{userName}', @userName), '{dataBaseName}', @defaultDataBaseName)
set @UserCreationScript =Replace(@UserCreationScript, '{userName}', @userName)
Execute(@LoginCreationScript)

/*User creation and role assignment*/
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', @defaultDataBaseName)
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db2')
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db3')
Execute(@TempUserCreationScript)

вы можете использовать:

CREATE LOGIN <login name> WITH PASSWORD = '<password>' ; GO 

для создания логина (см. здесь для более подробной информации).

тогда вам может понадобиться использовать:

CREATE USER user_name 

чтобы создать пользователя, связанного с именем входа для конкретной базы данных, вы хотите предоставить им доступ тоже.

(см. здесь дополнительные сведения)

вы также можете использовать:

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name

настройка разрешений для схемы, назначенных пользователям к.

(см. здесь дополнительные сведения)

две другие команды, которые вы могли бы найти полезным ALTER USER и ALTER LOGIN.

на прошлой неделе я установил Microsoft SQL Server 2014 Developer Edition на свой dev box и сразу же столкнулся с проблемой, которую я никогда раньше не видел.

я устанавливал различные версии SQL Server бесчисленное количество раз, и это, как правило, безболезненная процедура. Установите сервер, запустите консоль управления, это так просто. Однако после завершения этой установки, когда я попытался войти на сервер с помощью SSMS, я получил сообщение об ошибке, подобное приведенному ниже:

SQL Server ошибка входа 18456 "Ошибка входа для пользователя... (Microsoft SQL Server, ошибка: 18456)" Я привык видеть эту ошибку, если я ввел неправильный пароль при входе в систему – но это только если я использую смешанный режим (Проверка подлинности Windows и SQL). В этом случае сервер был настроен только с проверкой подлинности Windows, а учетная запись пользователя была моей собственной. Я все еще не уверен, почему он не добавил моего пользователя в роль SYSADMIN во время установки; возможно, я пропустил шаг и забыл его добавить. Во всяком случае, не вся надежда была потерянный.

способ исправить это, если вы не можете войти в систему с любой другой учетной записью на SQL Server, это добавить свой сетевой логин через интерфейс командной строки. Чтобы это работало, вам нужно быть администратором на Windows для ПК, на который вы вошли.

остановите службу MSSQL. Откройте Командную строку с помощью команды Запуск от имени администратора. Перейдите в папку, содержащую EXE-файл SQL Server; значение по умолчанию для SQL Server 2014-это "C:\Program файлы\Microsoft SQL Сервер\MSSQL12.MSSQLSERVER\MSSQL\Binn". Выполните следующую команду: "sqlservr.exe-m". Это позволит запустить SQL Server в однопользовательском режиме. Оставив эту командную строку открытой, откройте другую, повторяя шаги 2 и 3. Во втором окне командной строки выполните команду " sqlcmd-S Server_Name\Instance_Name" В этом окне выполните следующие строки, нажимая Enter после каждой из них: 1

создать логин [domainName\loginName] из WINDOWS Два ИДТИ Три Процедурой sp_addsrvrolemember 'LOGIN_NAME', 'SYSADMIN' Четыре ИДТИ Используйте CTRL+C для завершения обоих процессов в окне командной строки; вам будет предложено нажать Y для завершения процесса SQL Server.

перезапустите службу MSSQL. Вот так! Теперь вы можете войти в систему, используя свой сетевой логин.