繁体   English   中英

登录用户的sql权限,以进一步创建登录名和应用程序角色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM