2010-07-26 5 views
3

Как (в SQL Server) создать базу данных и создать пользователя, и этот пользователь будет администратором этой базы данных только с SQL-скриптом? Я имею в виду, что этот пользователь не может делать/получать доступ к какой-либо стороне этой базы данных!Как создать базу данных SQL Server с пользователем?

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

Я знаю, как это сделать в MySQL, но не уверен, как с SQL Server!

ответ

9

Предполагая, что вы используете windows auth с уже зарегистрированным доменом \ пользователем.

--create the database 
CREATE DATABASE NewDB 

--create the user from the login 
Use NewDB 
CREATE USER [domain\user] FOR LOGIN [domain\user] 

--To give user SELECT/UPDATE/INSERT/DELETE on all tables 
EXEC sp_addrolemember 'db_datareader', 'domain\user' 
EXEC sp_addrolemember 'db_datawriter', 'domain\user' 

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

--To give admin permissions 
EXEC sp_addrolemember 'db_owner', 'domain\user' 

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

http://msdn.microsoft.com/en-us/library/ms176061.aspx

Если вам нужно создать login также то вам необходимо следующее перед созданием USER на вашей базе данных.

--Using SQL Auth 
CREATE LOGIN loginname WITH PASSWORD = 'passw0rd'; 

--Windows Auth 
CREATE LOGIN domain\user FROM WINDOWS; 
3
DECLARE 
    @DatabaseName AS NVARCHAR(128), 
    @Username AS NVARCHAR(128), 
    @Password AS NVARCHAR(128), 
    @SQL AS NVARCHAR(MAX) 

SELECT 
    @DatabaseName = 'YourDatabaseName', 
    @Username = 'Username', 
    @Password = 'Password' 

SET @SQL = 'CREATE DATABASE [' + @DatabaseName + ']' 
EXEC (@SQL) 

SET @SQL = 'CREATE LOGIN [' + @Username + '] WITH PASSWORD = ''' + @Password + '''' 
EXEC (@SQL) 

SET @SQL = 'USE ' + @DatabaseName 
EXEC (@SQL) 

SET @SQL = 'CREATE USER [' + @Username + '] FOR LOGIN [' + @Username + ']' 
EXEC (@SQL) 

EXEC sp_addrolemember 'db_owner', @username 
Смежные вопросы