我有数据库(mssql)和一些表。 在Microsoft SQL Management Studio中,我在一个表上设置了某些列权限以更新(拒绝)指定的db用户。 可以。
用户无法使用拒绝权限更新列。他给错误通知某些列具有权限,例如: 对对象“用户”,数据库“ AL”,架构“ dbo”的“名称”列的UPDATE权限被拒绝。
我打算做的是,在datagrid中显示表,获取具有限制(权限)的列,并将它们设置为只读。因此,用户将不会更改它们并更新密码而不会出错。
我的问题是,如何在我的代码中通过c#获取此列的列表(数组)?
编辑1) 我找到了以下命令:
SELECT T.TABLE_TYPE AS OBJECT_TYPE, T.TABLE_SCHEMA AS [SCHEMA_NAME], T.TABLE_NAME AS [OBJECT_NAME], NULLIF(P.subentity_name, '') as COLUMN_NAME, P.PERMISSION_NAME FROM INFORMATION_SCHEMA.TABLES T
CROSS APPLY fn_my_permissions(T.TABLE_SCHEMA + '.' + T.TABLE_NAME, 'OBJECT') P
WHERE T.TABLE_NAME = 'tabel_name'
ORDER BY OBJECT_TYPE, [SCHEMA_NAME], [OBJECT_NAME], COLUMN_NAME, P.PERMISSION_NAME
如果看到结果(如果接受),则哪一列仅具有SELECT权限,也许我有我需要的东西。
编辑2) 没有实体框架,这不可能