我正在为客户的数据库编写一个简单的 CMS。有 12 个表,他们需要管理其中 4 个中的所有数据。
我设置了一个动态数据项目(Linq-to-SQL,因为这是我最熟悉的项目),第一页使所有 12 个表都可以进行编辑。它们位于一个名为visibleTables 的可枚举列表中。
接下来,我进入 SSMS 并创建了一个名为 UserEdit 的扩展属性,并将其设置为 0 或 1,具体取决于用户是否应该在该屏幕上看到它。
我想做的是通过该扩展属性过滤可见表列表,但不知道如何操作。
我可以通过此查询查看表列表和属性:
select major_id, name, value
from sys.extended_properties
where name = 'UserEdit'
我打算遍历可见表并删除带有 0 的表,但我还没有弄清楚,因为major_id 似乎不是我能找到的属性。
最佳答案
好吧,根据 http://msdn.microsoft.com/en-us/library/ms177541.aspx ,您的扩展属性类(OBJECT_OR_COLUMN)的“major_id”确实表示“object_id”。因此,以下查询将为您提供所有扩展属性以及它们所属的表:
select p.*, t.*
from sys.extended_properties p
inner join sys.tables t on p.major_id = t.object_id
where class = 1
您可以根据需要对其进行过滤,但如果您需要帮助,请告诉我。
关于.net - 从 SQL Server 表中选择扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714848/