如何在SQL Server中找到“只读”列的列表?

时间:2013-11-07 17:29:12

标签: sql sql-server

我想找到一个表的所有列,这些列对某些分析具有“只读”访问权限。

如何在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'

1 个答案:

答案 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
    )