2010-07-26 79 views
3

如何(在SQL Server中)创建一个数据库并创建一个用户,并且这个用户将仅对这个数据库的管理员使用SQL脚本?我的意思是这个用户不能在这个数据库的外面做任何事情!如何用用户创建SQL Server数据库?

是否有可能创建只能添加,更新/编辑或删除表中的数据的用户?

我知道如何在MySQL中做到这一点,但不知道如何与SQL Server!

回答

9

假设您正在使用已创建登录名为'domain \ user'的Windows身份验证。

--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也有,你可能需要一个可以在BOL中找到许多选项。

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 
相关问题