Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Системное представление для индексов  [new]
Шамиль Фаридович
Member

Откуда: Саратов
Сообщений: 487
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 

Поставлена задача:
1)получить список всех первичных ключей, построенных по полю(ям) типа uniqueidentifier и
2)определить, являются ли они кластеризованными.
С первым пунктом справляется запрос:

SELECT TC.TABLE_SCHEMA, TC.TABLE_NAME, C.COLUMN_NAME,C.ORDINAL_POSITION, TC.CONSTRAINT_TYPE, TC.CONSTRAINT_NAME
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
	ON CU.TABLE_NAME=TC.TABLE_NAME AND CU.TABLE_SCHEMA = TC.TABLE_SCHEMA and CU.CONSTRAINT_NAME=TC.CONSTRAINT_NAME
JOIN  INFORMATION_SCHEMA.COLUMNS C
	ON C.TABLE_NAME=TC.TABLE_NAME AND C.TABLE_SCHEMA = TC.TABLE_SCHEMA AND C.COLUMN_NAME=CU.COLUMN_NAME
WHERE C.DATA_TYPE = 'uniqueidentifier' and CONSTRAINT_TYPE='PRIMARY KEY'

Существует ли в INFORMATION_SCHEMA представление для определения типа индекса, или нужно использовать sys.indexes?
24 июл 12, 09:32    [12906428]     Ответить | Цитировать Сообщить модератору
 Re: Системное представление для индексов  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> или нужно использовать sys.indexes?

ага

Posted via ActualForum NNTP Server 1.5

24 июл 12, 09:40    [12906456]     Ответить | Цитировать Сообщить модератору
 Re: Системное представление для индексов  [new]
Шамиль Фаридович
Member

Откуда: Саратов
Сообщений: 487
В итоге получил:
select TC.TABLE_SCHEMA, TC.TABLE_NAME, C.COLUMN_NAME,C.ORDINAL_POSITION, TC.CONSTRAINT_NAME, SI.type_desc
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
	ON CU.TABLE_NAME=TC.TABLE_NAME AND CU.TABLE_SCHEMA = TC.TABLE_SCHEMA and CU.CONSTRAINT_NAME=TC.CONSTRAINT_NAME
JOIN  INFORMATION_SCHEMA.COLUMNS C
	ON C.TABLE_NAME=TC.TABLE_NAME AND C.TABLE_SCHEMA = TC.TABLE_SCHEMA AND C.COLUMN_NAME=CU.COLUMN_NAME
JOIN sys.indexes SI
	ON SI.object_id = OBJECT_ID(TC.TABLE_SCHEMA+'.'+TC.TABLE_NAME) AND SI.name = TC.CONSTRAINT_NAME
where C.DATA_TYPE = 'uniqueidentifier' and TC.CONSTRAINT_TYPE='PRIMARY KEY'
order by TC.TABLE_SCHEMA, TC.TABLE_NAME
24 июл 12, 10:02    [12906541]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить