我想找到一个表的所有列,这些列对某些分析具有“只读”访问权限。
如何在SQL Server中完成?
我试过了,但它没有给我预期的结果:
SELECT OBJECT_NAME(id) as ObjectName, Name as ComputedColumn
FROM syscolumns
WHERE COLUMNPROPERTY( id ,name, 'SystemDataAccess') = 0
AND name like 'my_table_name'
答案 0 :(得分:0)
如果您在所有用户视角中表示“只读”(在正常情况下,无论用户特定访问权限,都无法写入列),可以使用以下类型的内容返回列是身份或计算值(我不能想到你不能写入列的任何其他特定情况)...
DECLARE @Tbl nvarchar(500)='MyTableName';
SELECT T.Name, C.*
FROM sys.tables AS T
JOIN sys.Columns AS C ON T.Object_id=C.object_id
WHERE T.Name=@Tbl
AND (
C.Is_Identity=1
OR C.Is_Computed=1
)