我有一个旧ERP的大约30张桌子,这些桌子有多列主键。不幸的是,我不知道这些键是什么。我已经使用SSIS分析任务来确定最多5列的主键候选对象,但是它运行得如此之慢以至于不切实际。有没有什么工具可以更快地做到这一点?我的替代方法是使用Excel进行大约2周的调查,并选择许多不同的查询。
答案 0 :(得分:2)
以下内容将为您提供所需的信息。
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;
答案 1 :(得分:0)
事实证明,通过使用ODBC驱动程序对ER / Studio进行反向工程,我能够获得许多表的主键。
我不知道它们如何设法获取主键(数据库生成的报告未显示主键),但是对于大多数表来说,它们似乎就在那里。