Я хочу написать сценарий для создания admin
пользователя (с abcd
паролем) в SQL Server Express. Также я хочу предоставить этому пользователю admin
полные права.
источник
Я хочу написать сценарий для создания admin
пользователя (с abcd
паролем) в SQL Server Express. Также я хочу предоставить этому пользователю admin
полные права.
Основываясь на вашем вопросе, я думаю, что вы можете немного смутить разницу между пользователем и логином . Логин это учетная запись на 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) и создать логин, как показано выше. Затем вы «ПРЕДОСТАВЛЯЕТЕ» привилегии этому входу в систему SQL в зависимости от того, что требуется для вашего приложения. См. Здесь для получения дополнительной информации.
ОБНОВЛЕНИЕ: Аарон указывает на использование sp_addsrvrolemember для назначения подготовленной роли вашей учетной записи для входа. Это хорошая идея - быстрее и проще, чем предоставление привилегий вручную. Если вы погуглите, то увидите множество ссылок. Однако вы все равно должны понимать разницу между логином и пользователем.
Полные права администратора для всего сервера или конкретной базы данных? Я думаю, что остальные ответили за базу данных, но за сервер:
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 .
источник
CREATE LOGIN AdminLOGIN WITH PASSWORD = 'pass' GO Use MyDatabase; GO IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'AdminLOGIN') BEGIN CREATE USER [AdminLOGIN] FOR LOGIN [AdminLOGIN] EXEC sp_addrolemember N'db_owner', N'AdminLOGIN' EXEC master..sp_addsrvrolemember @loginame = N'adminlogin', @rolename = N'sysadmin' END; GO
это полное пособие для использования в сети:
1- Right-click on SQL Server instance at root of Object Explorer, click on Properties Select Security from the left pane. 2- Select the SQL Server and Windows Authentication mode radio button, and click OK. 3- Right-click on the SQL Server instance, select Restart (alternatively, open up Services and restart the SQL Server service). 4- Close sql server application and reopen it 5- open 'SQL Server Configuration Manager' and tcp enabled for network 6-Double-click the TCP/IP protocol, go to the IP Addresses tab and scroll down to the IPAll section. 7-Specify the 1433 in the TCP Port field (or another port if 1433 is used by another MSSQL Server) and press the OK 8-Open in Sql Server: Security And Login And Right Click on Login Name And Select Peroperties And Select Server Roles And Checked The Sysadmin And Bulkadmin then Ok. 9-firewall: Open cmd as administrator and type: netsh firewall set portopening protocol = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT
источник
На прошлой неделе я установил Microsoft SQL Server 2014 Developer Edition на свой ящик разработчика и сразу же столкнулся с проблемой, которую никогда раньше не видел.
Я устанавливал различные версии 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 Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ Binn». Выполните следующую команду: «sqlservr.exe –m». Это запустит SQL Server в однопользовательском режиме. Не закрывая эту командную строку, откройте другую, повторив шаги 2 и 3. Во втором окне командной строки запустите «SQLCMD –S Server_Name \ Instance_Name». В этом окне выполните следующие строки, нажимая Enter после каждой: 1
Перезапустите службу MSSQL. Это оно! Теперь вы можете войти в систему, используя свой сетевой логин.
источник