Sql 信息方案
我需要有关SQL信息和模式的帮助。我需要找到:所有用户都有权向其中写入查询的表。也许有人有一些想法?试试这个Sql 信息方案,sql,Sql,我需要有关SQL信息和模式的帮助。我需要找到:所有用户都有权向其中写入查询的表。也许有人有一些想法?试试这个 select sys.schemas.name 'Schema' , sys.objects.name Object , sys.database_principals.name username , sys.database_permissions.type permissions_type , sys.database_permissions.
select sys.schemas.name 'Schema'
, sys.objects.name Object
, sys.database_principals.name username
, sys.database_permissions.type permissions_type
, sys.database_permissions.permission_name
, sys.database_permissions.state permission_state
, sys.database_permissions.state_desc
, state_desc + ' ' + permission_name + ' on ['+ sys.schemas.name + '].[' + sys.objects.name + '] to [' + sys.database_principals.name + ']' COLLATE LATIN1_General_CI_AS
from sys.database_permissions join sys.objects on sys.database_permissions.major_id = sys.objects.object_id join sys.schemas on sys.objects.schema_id = sys.schemas.schema_id join sys.database_principals on sys.database_permissions.grantee_principal_id = sys.database_principals.principal_id order by 1, 2, 3, 5
答案是:)
添加您正在使用的数据库。我相信,通过信息模式,您可以访问的所有信息都是有关您自己权限的信息(您被授予或已经授予他人的权限)。我认为你不能保证其他用户的信息。你检查过这个吗?那里太复杂了。。。我只需要几行代码:(一个普通用户无权列出所有其他用户。问题目前只是标记的,这意味着任何答案(在没有附加标记的情况下)应遵循ANSI标准,且不包含特定于产品的代码。问题中提到的
信息_SCHEMA
视图是唯一接近跨数据库元数据标准的视图。此答案似乎使用特定于产品的元数据表/视图。
SELECT table_name AS "Table name", privilege_type AS "Permission", grantee AS "User"
FROM information_schema.table_privileges
WHERE privilege_type = 'SELECT'
AND grantee = 'PUBLIC';