2016-08-25 905 views
1

我在AWS中運行了RDS實例,運行SQL Server 2012.我可以很好地登錄並創建新的數據庫(通過SSMS和sqlcmd.exe)。AWS RDS爲數據庫創建用戶

我面臨的問題是,由於在通過RDS創建過程設置「godmode」帳戶時沒有足夠的權限,我無法爲每個應用程序數據庫創建用戶。

我在此RDS實例上有> 5個應用程序及其數據庫,並且要設置它以便每個應用程序都擁有自己的登錄名,並且只是用戶自己的數據庫。

我可以創建登錄名,但我不能將該登錄名作爲用戶分配給數據庫。這是不能做到的嗎?我知道RDS有限制,但這看起來應該是可能的。我的用例不可能是獨一無二的!

我試圖建立用戶像這樣:

DECLARE @Username nvarchar(255) = 'test1'; 
DECLARE @Password nvarchar(255) = 'sUp3rS3crEt'; 

USE [Application1] 

IF NOT EXISTS 
    (SELECT name 
    FROM master.sys.server_principals 
    WHERE name = @Username) 
BEGIN 
    EXEC sp_addlogin @Username, @Password 
END 

BEGIN 
EXEC sp_adduser @Username, @Username, 'db_owner' 
END 

其失敗的sp_adduser與

Msg 15247, Level 16, State 1, Procedure sp_adduser, Line 35 [Batch Start Line 0] 
User does not have permission to perform this action. 

嘗試手動創建一個用戶通過SSMS的權限問題也會失敗。

這是RDS與Sql Server 2012的實際預期行爲嗎?

回答

0

到目前爲止,我從來沒有嘗試過通過SQL來做,但通過SSMS幾次沒有問題地完成它。請嘗試以下操作(以前面在AWS RDS控制檯指定的用戶身份登錄):

  1. 創建登錄。保持「服務器角色」爲「公共」。
  2. 在用戶映射選項卡下,將新創建的登錄映射到您所需的特定數據庫。選擇「db_owner」作爲角色。我通常只是將默認模式保留爲dbo,但這取決於您。
1

試試這個SQL命令:

CREATE USER [MyUSER] FOR LOGIN [MyUser] WITH DEFAULT_SCHEMA=[dbo] 
+0

這似乎是'WITH DEFAULT_SCHEMA = [DBO]'的把戲一樣。謝謝! –

相關問題