Sql-Server

有沒有辦法提取數據庫中所有主鍵的報告或編寫腳本?

  • March 27, 2018

我剛剛發現我們的一個數據庫的部署副本沒有主鍵。這可能是 SSMS 導入/導出嚮導的錯,它對我做了同樣的事情。我們的模式主副本仍然有主鍵,我想生成一個腳本,將這些鍵添加到沒有它們的任何已部署數據庫中。

我能希望的最好的事情就是為所有主鍵編寫腳本,但我也很樂意提取構成這些鍵的列的名稱並生成我自己的腳本。

SELECT * 
FROM
(SELECT obj.name + '.' +col.name as colName, idx.name, idx.is_unique, idx.is_primary_key, idx.is_unique_constraint
 FROM 
   sys.indexes idx INNER JOIN
   sys.objects obj ON idx.object_id = obj.object_id INNER JOIN
   sys.index_columns idxcol ON idxcol.index_id = idx.index_id AND idxcol.object_id = idx.object_id INNER JOIN
   sys.columns col ON col.column_id=idxcol.column_id AND col.object_id = idxcol.object_id
 WHERE obj.type_desc NOT IN ('SYSTEM_TABLE', 'INTERNAL_TABLE')) a
WHERE a.is_primary_key = 1

引用自:https://dba.stackexchange.com/questions/45338