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