我想允许某些用户在数据库(表、视图、sp、函数、模式等)上创建/修改对象,并且不想给 db_owner。
我以为我可以使用 db_ddladmin 角色来做到这一点,但不知何故,这并没有达到预期的效果。我得到的错误信息是这样的:
Your are not loggend on as the database owner or system administrator.
You might not beable to sache changes to tables that you do not own.
Table dbo.MyTable is set to read only,
user doesn't have enough right on this table.
ETC
知道如何实现我的目标吗?
编辑:
我重新阅读了你的问题,我之前可能弄错了。看起来您正在使用 SSMS 而不是 T-SQL 脚本运行脚本。我验证了它在使用 T-SQL 脚本时有效,而在使用 SSMS GUI 时无效。要解决此问题,您可能需要使用 T-SQL 脚本。
这是一个已知问题,看起来在 DENALI CTP3 中已修复,我可以确认。
参考:https ://connect.microsoft.com/SQLServer/feedback/details/467582/db-ddladmin-role-doesnt-allow-use-of-design-functions-in-ssms
刚刚验证了(正确的)行为也适用于 SQL Server 2008 R2。不幸的是,我没有要验证的 SQL Server 2008 实例。
Sankar 的链接中描述了一种解决方法。
这适用于 SQLSever 2008 和 2008 R2。