Найти многоколонный первичный ключ - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть около 30 таблиц из старой ERP, которые имеют многоколонные первичные ключи.К сожалению, я не знаю, что это за ключи.Я использовал задачу профилирования служб SSIS, чтобы определить кандидатов первичного ключа для максимум 5 столбцов, но она выполняется настолько медленно, что нецелесообразно.Есть ли инструмент, который сделал бы это быстрее?Моя альтернатива - около 2 недель исследования с использованием Excel и множества отдельных запросов.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Как оказалось, мне удалось получить первичные ключи для многих таблиц путем обратного инжиниринга с ER / Studio с использованием драйвера ODBC.

Я понятия не имею, как им удается получить первичные ключи (отчеты, созданные базой данных, не показывают их), но для большинства таблиц кажется, что они есть.

0 голосов
/ 21 ноября 2018

Следующее должно дать вам то, что вы ищете.

SELECT 
    *
FROM (
        SELECT 
            i.object_id,
            index_name = i.name,
            key_column_name = c.name,
            ic.key_ordinal,
            key_col_cnt = MAX(ic.key_ordinal) OVER (PARTITION BY ic.object_id)
        FROM
            sys.indexes i
            JOIN sys.index_columns ic
                ON i.object_id = ic.object_id
                AND i.index_id = ic.index_id
            JOIN sys.columns c
                ON ic.object_id = c.object_id
                AND ic.column_id = c.column_id
        WHERE 
            i.is_primary_key = 1
        ) ix
WHERE 
    ix.key_col_cnt > 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...