Bet*_*per 4 schema sql-server permissions users
当我们自定义的、自产的 CMS 使用 GUI 创建数据表时,它会根据特定于站点的用户模式(即sitename
)而不是模式创建它们dbo
。
问题是我们的站点特定用户目前没有“看到”这些其他模式,即使他们在db_owner
角色中。因此,某处缺少权限设置,这将授予他们对这些表进行读写的能力。
迁移到新的 SQL 服务器时发生了此问题。从 2005 工作组版到 2008 网络版。
它可以很简单:
GRANT SELECT ON SCHEMA::[sitename] TO [user];
Run Code Online (Sandbox Code Playgroud)
如果有程序和函数,您还需要:
GRANT EXECUTE ON SCHEMA::[sitename] TO [user];
Run Code Online (Sandbox Code Playgroud)
文档中列出了适用于架构级别的完整权限列表:
您还可以为任何用户设置默认架构,这在某些情况下可能会有所帮助(例如,如果他们在没有明确指定sitename
架构的情况下创建表):
ALTER USER [user] WITH DEFAULT_SCHEMA = [sitename];
Run Code Online (Sandbox Code Playgroud)
请注意,DENY
覆盖GRANT
(并且还覆盖角色成员资格权限,包括db_owner
),因此请检查以确保没有人无意中阻止了对架构的访问。如果您在此处找到任何行,则可以开始调查:
SELECT * FROM sys.database_permissions
WHERE class_desc = N'SCHEMA' AND [state] = 'D';
Run Code Online (Sandbox Code Playgroud)
请注意,权限可以间接应用于用户(例如,通过 AD 组成员身份或数据库角色),因此请确保您遵循具有相关...的任何数据库主体的面包屑DENY
。
归档时间: |
|
查看次数: |
390 次 |
最近记录: |