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

Откуда: Санкт-Петербург
Сообщений: 16
В MS SQL 2005 и старше я делают такой запрос:

sSql = "SELECT ix.name AS IndexName"
sSql = sSql & " FROM sys.tables AS t"
sSql = sSql & " INNER JOIN sys.indexes AS ix ON t.object_id = ix.object_id"
sSql = sSql & " INNER JOIN sys.index_columns AS ic ON ix.object_id = ic.object_id AND ix.index_id = ic.index_id"
sSql = sSql & " INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id"
sSql = sSql & " INNER JOIN sys.schemas AS s ON t.schema_id = s.schema_id"
sSql = sSql & " WHERE ix.is_primary_key = 1 AND s.name = 'dbo' AND t.name = " & Quotes(sBaseDbTable) & " AND c.name = '" & sField & "'"

А для MS SQL 2000 как надо?

Спасибо.
14 дек 13, 16:26    [15292796]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
aleks2
Guest
1. Включить Profiler.
2. Открыть в EM список индексов любой таблицы.
3. Делать также.
14 дек 13, 17:40    [15292941]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
Prostoysoft
Member

Откуда: Санкт-Петербург
Сообщений: 16
Спасибо, aleks2, совет действительно полезный. Жаль только, что у меня нет под рукой MS SQL 2000.
14 дек 13, 17:52    [15292958]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
sysindexes, sysindexkeys, syscolumns, sysobjects

ЗЫ. Надеюсь Гугл (для получения списка полей для каждой из системных таблиц) под рукой есть.
14 дек 13, 18:07    [15293002]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Интересно, если под рукой нету 2K, то как тестировать запрос?
14 дек 13, 20:39    [15293408]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
locky,

sysindexes, sysindexkeys, syscolumns, sysobjects и т.п. поддерживаются (во всяком случае и в 2K8R2) для обратной совместимости.
14 дек 13, 20:44    [15293422]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
pkarklin
locky,

sysindexes, sysindexkeys, syscolumns, sysobjects и т.п. поддерживаются (во всяком случае и в 2K8R2) для обратной совместимости.

Я знаю
но по хорошему то тестировать надо на чем? Отож
А то мало ли, что там еще...
если не CTE и varbinary(max) то какой нить хомут в DDL (не зря же он индексы и прочее вычитывает)
14 дек 13, 20:48    [15293434]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
locky
но по хорошему то тестировать надо на чем? Отож


Это да, согласен.
14 дек 13, 20:49    [15293438]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
sdet
Member

Откуда:
Сообщений: 463
locky
pkarklin
locky,

sysindexes, sysindexkeys, syscolumns, sysobjects и т.п. поддерживаются (во всяком случае и в 2K8R2) для обратной совместимости.

Я знаю
но по хорошему то тестировать надо на чем? Отож

Тестировать надо на том где будет работать.
Любая другая симуляция не может гарантировать прохождение теста
14 дек 13, 21:00    [15293480]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя индекса по имени таблицы и поля в MS SQL 2000 как?  [new]
Glory
Member

Откуда:
Сообщений: 104760
А вот если использовать специальные представления типа INFORMATION_SCHEMA.KEY_COLUMN_USAGE, то можно было бы написать универсальный запрос
15 дек 13, 14:17    [15295066]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить