用于创建表的 SQL Server 数据库级角色

koj*_*san 4 sql-server permissions role

有没有办法创建或更改用于创建表的特殊角色?我们的软件开发团队db_datareaderdb_datawriter角色,但他们不能创建新表。

我阅读了与数据库级角色相关的这篇文章我不想授予db_ddladmin角色,因为此角色的权限太多。

所以我的问题是如何为数据库提供创建和删除表的权限?视图、过程和函数也可以。我所需要的只是我不想授予与安全、登录或备份操作相关的权限。

Ran*_*gen 6

如果要创建具有特定权限的角色,可以执行以下操作:

CREATE ROLE CreateObjects
GRANT CREATE TABLE TO CreateObjects
GRANT CREATE VIEW TO CreateObjects
GRANT CREATE FUNCTION TO CreateObjects
GRANT CREATE PROCEDURE TO CreateObjects
GRANT ALTER ANY SCHEMA TO CreateObjects
Run Code Online (Sandbox Code Playgroud)

创建测试用户:

CREATE LOGIN testlogin with password = 'StrongP@SSWORD123'

CREATE USER Testlogin FOR LOGIN Testlogin
Run Code Online (Sandbox Code Playgroud)

将用户添加到角色:

ALTER ROLE CreateObjects ADD MEMBER Testlogin
Run Code Online (Sandbox Code Playgroud)

测试用户权限:

EXECUTE AS LOGIN = 'testlogin'

SELECT SUSER_NAME(),USER_NAME()

(No column name)    (No column name)
testlogin   Testlogin


CREATE TABLE dbo.test(id int)

DROP TABLE dbo.test 
REVERT
Run Code Online (Sandbox Code Playgroud)

结果

Commands completed successfully.
Run Code Online (Sandbox Code Playgroud)

或者像 Tom 所说的那样,将用户添加到 db_ddladmin 角色。

ALTER ROLE db_ddladmin ADD MEMBER testlogin
Run Code Online (Sandbox Code Playgroud)