只要您授予任何需要对这些对象(视图/过程)显式权限的帐户,您就应该看不到任何问题。在更改 PUBLIC 角色权限后,我通常看到的问题是应用程序假定权限存在,而不是仅仅向它们提供显式权限。
您会发现某些 Microsoft 文档声明不更改 PUBLIC 角色权限。我使用 IASE 数据库清单,授予 PUBLIC 角色的权限是我们必须删除/撤销的第一件事。如果需要,我总是将脚本放在手边以恢复权限。
编辑
查询以查找我有时使用的公共权限:
SELECT o.name AS [Object], p.permission_name AS [Type]
FROM sys.all_objects o
INNER JOIN sys.database_permissions p ON o.object_id = p.major_id
INNER JOIN sys.database_principals u ON u.principal_ID = p.grantee_principal_id
WHERE u.name = 'public'
只要您授予任何需要对这些对象(视图/过程)显式权限的帐户,您就应该看不到任何问题。在更改 PUBLIC 角色权限后,我通常看到的问题是应用程序假定权限存在,而不是仅仅向它们提供显式权限。
您会发现某些 Microsoft 文档声明不更改 PUBLIC 角色权限。我使用 IASE 数据库清单,授予 PUBLIC 角色的权限是我们必须删除/撤销的第一件事。如果需要,我总是将脚本放在手边以恢复权限。
编辑 查询以查找我有时使用的公共权限:
我不会为所有事情都这样做。
大多数锁定脚本删除或拒绝权限选择性。SQL Server 2005+ 也比旧版本好(脚本适用于 SQL Server 2000)
只需运行 SQL 分析器并查看标准用户使用 SSMS 打开数据库时运行的内容。例如,spt_values 被大量使用但没有记录。话虽如此,这只会影响开发人员等(最多是db_owner,从不影响系统管理员)。最终用户不应使用 SSMS