0

我有大约 30 个来自旧 ERP 的表,它们具有多列主键。不幸的是,我不知道这些键是什么。我已经使用 SSIS 分析任务来确定最多 5 列的主键候选者,但它运行速度太慢以至于不切实际。有什么工具可以更快地做到这一点吗?我的替代方案是使用 Excel 进行大约 2 周的调查和大量选择不同的查询。

4

2 回答 2

3

以下内容应该可以为您提供所需的内容。

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;
于 2018-11-21T16:13:42.013 回答
0

事实证明,通过使用 ODBC 驱动程序对 ER/Studio 进行逆向工程,我能够获得许多表的主键。

我不知道他们如何设法获取主键(数据库生成的报告没有显示它们),但对于大多数表来说,它们似乎就在那里。

于 2018-11-26T15:13:38.147 回答