次のクエリは、すべてのデータベースの主キーと追加の列のリストを返します。
SELECT *
FROM sysobjects AS s
WHERE xtype='pk'
前述の追加の列はいずれも、主キーの ID、シード値、増分値などに関連していません。
どのクエリを使用する必要がありますか、またはデータベース内のすべての主キーとそれらの ID およびシード値を見つけるにはどうすればよいですか?
次のクエリは、すべてのデータベースの主キーと追加の列のリストを返します。
SELECT *
FROM sysobjects AS s
WHERE xtype='pk'
前述の追加の列はいずれも、主キーの ID、シード値、増分値などに関連していません。
どのクエリを使用する必要がありますか、またはデータベース内のすべての主キーとそれらの ID およびシード値を見つけるにはどうすればよいですか?
更新しました
(現在は関数identity_columns
の代わりにテーブルを使用していIDENT_...
ます)
SELECT object_name(i.object_id) tableName,
i.name indexName,
c.name columnName,
c.is_identity,
idc.seed_value,
idc.increment_value,
idc.last_value
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id
INNER JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT OUTER JOIN sys.identity_columns idc ON idc.object_id = c.object_id AND idc.column_id = c.column_id
WHERE i.is_primary_key = 1
ここに別の回答があります b/c 選択を組み合わせ、並べ替えのために作成日と変更日を追加し、スキーマ間の重複の可能性のためにスキーマ名を追加しました b/c キー名は一意です:
SELECT schema_name = ( SELECT top 1 pk.CONSTRAINT_SCHEMA FROM information_schema.table_constraints pk INNER JOIN information_schema.key_column_usage c ON c.TABLE_NAME = pk.TABLE_NAME WHERE pk.CONSTRAINT_NAME like '%' + i.name + '%')
,object_name(i.object_id) tableName, i.name indexName, c.name columnName, c.is_identity
,ident_seed(object_name(i.object_id)) seed
,ident_incr(object_name(i.object_id)) increment
,ident_current(object_name(i.object_id)) lastAssignedId
,CreateDate = ( SELECT s.crdate FROM sysobjects s INNER JOIN (SELECT COUNT(1) cnt, xtype FROM sysobjects group by xtype) c ON s.xtype = c.xtype WHERE s.name = i.name)
,ModifiedDate = (SELECT s.refdate FROM sysobjects s INNER JOIN (SELECT COUNT(1) cnt, xtype FROM sysobjects group by xtype) c on s.xtype = c.xtype WHERE s.name = i.name)
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id
INNER JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
WHERE i.is_primary_key = 1
ORDER BY ModifiedDate, CreateDate DESC