Выберите расширенное свойство из таблиц SQL Server - PullRequest
3 голосов
/ 16 июля 2011

Я пишу простую CMS для клиентской базы данных. Существует 12 таблиц, и им нужно управлять всеми данными в 4 из них.

Я настроил проект динамических данных (Linq-to-SQL, поскольку это то, с чем я больше всего знаком), и на первой странице все 12 таблиц доступны для редактирования, как и должно быть. Они находятся в перечисляемом списке с именем visibleTables.

Затем я вошел в SSMS и создал расширенное свойство с именем UserEdit и установил его в 0 или 1 в зависимости от того, должен ли пользователь видеть его на этом экране.

Я хотел бы отфильтровать список visibleTables по этому расширенному свойству, но не знаю, как это сделать.

Я могу видеть список таблиц и свойства с этим запросом:

select major_id, name, value
from sys.extended_properties
where name = 'UserEdit'

и я собирался пройтись по visibleTables и удалить те с 0, но я еще не понял этого, так как major_id, кажется, не является свойством, которое я могу найти.

Ответы [ 2 ]

8 голосов
/ 16 июля 2011

Ну, согласно http://msdn.microsoft.com/en-us/library/ms177541.aspx, "major_id" для вашего класса расширенных свойств (OBJECT_OR_COLUMN) действительно указывает "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

Вы можете отфильтровать его, как хотите, но дайте мне знать, если вам нужна помощь.

3 голосов
/ 18 октября 2013
  SELECT major_id, minor_id, t.name AS [Table], c.name AS [Column], value AS [Extended Property]
  FROM sys.extended_properties AS ep
  INNER JOIN sys.tables AS t ON ep.major_id = t.object_id 
  INNER JOIN sys.columns AS c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id
  WHERE class = 1 order by t.name; 

Эта работа для меня ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...