创建视图时无权使用“dbo”

MrV*_*mes 4 sql-server-2005 permissions users

我想创建一个user对服务器内两个数据库的访问最少的数据库。该用户将由第三方人员使用,将商业智能工具集成到我们的数据库中。他们已经指定他们只需要创建视图。

所以,我在服务器上创建一个新用户,那么使用的每个数据库的数据库属性授予他们SELECTCREATE VIEW特权数据库。

然后我使用该用户登录 SSMS,并尝试创建一个视图,但我收到一条消息说

'dbo' 要么不存在,要么我无权使用它。

我试图通过反复试验自己解决这个问题,但我只是不了解 sql server 上的用户权限。我做错了什么,我需要采取哪些额外/不同的步骤?

请记住,我不希望他们拥有比他们需要的最低限度更多的控制权。

KAS*_*DBA 7

您的用户应该有权修改 dbo 架构。您可以通过将权限分配给用户所属的角色来实现:

所以它就像:

CREATE ROLE Limitedaccess; 
GO 

GRANT CREATE VIEW TO Limitedaccess; 
GO 

GRANT SELECT ON SCHEMA::dbo TO Limitedaccess; 
GO 

CREATE USER user WITHOUT LOGIN; --- this would be the user here
GO 

EXEC sp_addrolemember 'Limitedaccess', 'User'; 
GO
Run Code Online (Sandbox Code Playgroud)

授予权限后,重新运行之前的CREATE VIEW语句。现在它会成功。

GRANT ALTER ON SCHEMA::dbo TO Limitedaccess; 
GO 
Run Code Online (Sandbox Code Playgroud)