1

次のクエリは、すべてのデータベースの主キーと追加の列のリストを返します。

SELECT  *
FROM    sysobjects AS s
WHERE   xtype='pk'

前述の追加の列はいずれも、主キーの ID、シード値、増分値などに関連していません。

どのクエリを使用する必要がありますか、またはデータベース内のすべての主キーとそれらの ID およびシード値を見つけるにはどうすればよいですか?

4

2 に答える 2

5

更新しました

(現在は関数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
于 2013-10-31T22:53:48.977 に答える
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
于 2013-11-01T16:08:15.243 に答える