2013-03-06 74 views
1

下面的代码允许我通过使用查询在sql server中创建用户。它目前创建一个用户配置文件,但它使用户可以访问服务器上的所有数据库。我只想他们不得不“测试”数据库访问如何将我去这样做为sql server创建用户

CREATE LOGIN [SupportUser] 
WITH PASSWORD=N'SupportUser', 
DEFAULT_DATABASE=[master], 
DEFAULT_LANGUAGE=[us_english], 
CHECK_EXPIRATION=OFF, 
CHECK_POLICY=OFF 
GO 
+0

你需要使用sql命令行吗?如果不是只使用可以设置用户角色的管理工作室。 – YvesR 2013-03-06 16:30:12

+0

我已经设置了角色,但只希望用户访问那个数据库 – user2108195 2013-03-06 16:33:47

+0

我想如果您希望该用户只能访问TEST数据库,那么DEFAULT_DATABASE也应该是TEST而不是MASTER。 – JackLock 2013-03-06 16:36:03

回答

1
CREATE LOGIN [SupportUser] WITH PASSWORD=N'SupportUser', DEFAULT_DATABASE=[MASTER], 
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 
USE [TEST] 
GO 
CREATE USER [SupportUser] FOR LOGIN [SupportUser] 
GO 
USE [TEST] 
GO 
EXEC sp_addrolemember N'db_datareader', N'SupportUser' 
GO 
USE [TEST] 
GO 
EXEC sp_addrolemember N'db_datawriter', N'SupportUser' 
GO 
USE [TEST] 
GO 
EXEC sp_addrolemember N'db_ddladmin', N'SupportUser' 
GO 
+0

当你使用它时,这个使用的模式会得到什么?默认dbo。 ? – YvesR 2013-03-06 16:32:51

+1

是的。由于问题没有提及需要访问数据库的具体级别,因此我假设用户具有读取,写入和执行权限。 – JackLock 2013-03-06 16:34:48

0

试试这个。

CREATE LOGIN [SupportUser] 
WITH PASSWORD=N'SupportUser', 
DEFAULT_DATABASE=[master], 
CHECK_EXPIRATION=OFF, 
CHECK_POLICY=OFF 
GO 
USE [TEST] 
GO 
CREATE USER [SupportUser] FOR LOGIN [SupportUser] 
GO 
use [TEST] 
GO 
GRANT SELECT ON [dbo].[myView] TO [SupportUser] 
GO