我想查找具有“只读”访问权限的表的所有列以进行某些分析。
这如何在 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'
我想查找具有“只读”访问权限的表的所有列以进行某些分析。
这如何在 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'
如果您在所有用户的角度表示“只读”(在正常情况下,无论用户特定的访问权限如何,都没有人应该能够写入该列),则可以使用以下类型的事物来返回身份列或计算值(我想不出您无法写入列的任何其他特定情况)...
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
)