[英]sql permissions to a login user to further create logins and application roles
我正在使用SQL Server Express 2005。
我只有一個數據庫可以使用&創建登錄名,用戶並僅授予對此數據庫的權限。
我創建了一個數據庫shopDB。
然后登錄shopDBLogin。
然后,我選擇shopDB並為shopDBLogin創建了一個用戶shopDBUser。 代碼是:
create database shopDB
use shopDB
create login shopDBLogin with password='_' , default_database = shopDB
use shopDB
create user shopDBUser for login shopDBLogin
現在,我想授予shopDBUser權限以執行以下任務:
-在這些登錄名中創建3個新登錄名L1,L2,L3和3個新用戶U1,U2,U3
-授予對U2,U3的權限以僅插入sql數據庫
-創建3個應用程序角色
如何向用戶授予這些任務的權限? 請幫忙。
我必須使用db_securityadmin 。
使用sp_addrolemember分發角色。
例:
EXEC sp_addrolemember 'db_securityadmin', 'shopDBUser'
如果您只希望shopDBUser能夠將“子用戶”變成他自己的用戶:您不能使用角色來做到這一點。 我建議創建一個執行此操作的存儲過程,向存儲過程授予提升的權限,然后向shopDBUser授予執行該存儲過程的權限。
當然,您必須自己在stp中進行必要的檢查。 主要是因為我認為SQL中根本不了解子用戶的概念。
編輯:也許將子用戶的概念實現為單獨的表UserInfo。 請參見以下示例:
CREATE PROCEDURE [dbo].[stp_CreateSubUser]
(
@SubUser nvarchar(200),
@Pass nvarchar(200)
)
AS
BEGIN
EXEC('create login ' + @SubUser + ' with password=''' + @Pass + ''', default_database = shopDB')
EXECUTE AS OWNER
EXEC('create user ' + @SubUser + ' for login ' + @SubUser )
EXECUTE AS OWNER
EXEC sp_addrolemember 'db_datareader', @SubUser
EXECUTE AS OWNER
EXEC sp_addrolemember 'db_datawriter', @SubUser
EXECUTE AS OWNER
INSERT [dbo].[UserInfo]
([UserName],[ParentUserName])
VALUES
(@SubUser, USER)
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.