2013-03-06 146 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