0

我想查找具有“只读”访问权限的表的所有列以进行某些分析。

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

1 回答 1

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
    )
于 2013-11-07T17:55:17.790 回答