【发布时间】:2011-03-09 01:15:24
【问题描述】:
我在开发数据库中有 SQL Server 2008 的需求
- 只有 DBA(他们是数据库所有者)才能创建、更改表。 开发人员不应创建或更改表。
- 开发人员可以创建/更改存储过程/用户定义的函数 在 dbo 架构中,并且可以执行 SP/UDF。
- 开发人员应该对表有 SELECT、INSERT、DELETE、UPDATE( dbo 架构中的表
如何使用 GRANT 语句实现这一点
从 Google 找到了一个示例解决方案,但仍有问题
CREATE LOGIN testdev WITH PASSWORD = 'sldkjlkjlkj 987kj//'
CREATE USER testdev
GRANT ALTER ON SCHEMA::dbo TO testdev
GRANT CREATE PROCEDURE TO testdev
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::dbo TO testdev
CREATE TABLE mysig (a int NOT NULL)
EXECUTE AS USER = 'testdev'
go
CREATE PROCEDURE slaskis AS PRINT 12
go
CREATE TABLE hoppsan(a int NOT NULL) -- FAILS!
go
INSERT mysig (a) VALUES(123)
go
REVERT
go
DROP PROCEDURE slaskis
DROP TABLE mysig
DROP USER testdev
DROP LOGIN testdev
上面的语法可以阻止开发者创建表,但不能阻止开发者使用SSMS设计和修改表。
谢谢。
【问题讨论】:
-
首先,您是否为 dba 和开发人员设置了单独的组?
-
如果您发布代码或 XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!
-
hgulyan:是的,我确实有不同的 dba 和开发人员用户组
标签: sql sql-server