1
如何查找數據庫中的所有主鍵以及它們的身份和種子狀態?如何查找列和日期的所有主鍵和標識狀態已更改?
我已經在使用數據庫並運行此查詢,但我需要確定種子和標識狀態。如果我能找到主鍵更改狀態以及哪個表作爲主鍵時,情況會更好。
select
*
from
sysobjects as s
where xtype='pk'
如何查找數據庫中的所有主鍵以及它們的身份和種子狀態?如何查找列和日期的所有主鍵和標識狀態已更改?
我已經在使用數據庫並運行此查詢,但我需要確定種子和標識狀態。如果我能找到主鍵更改狀態以及哪個表作爲主鍵時,情況會更好。
select
*
from
sysobjects as s
where xtype='pk'
修訂
(現在使用的IDENT_...
功能identity_columns
表代替)
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
http://blog.sqlauthority.com/2007/04/23/sql-server-query-to-find-seed-values-increment-values-and-current-identity-column-value-of-the -table/ – JohnLBevan
當pk發生變化時,是否有找到crdate或refdate等時間的方法,或者僅當列名更改時纔有這種方法? – user2943263
目前爲止我還找不到什麼 - 可能值得在dba.stackexchange.com上提問,因爲那些傢伙知道更多關於此類區域的信息。你總是可以編寫自定義代碼來審計今後的事情。另外,如果你有交易日誌,我想這有可能(雖然可能很痛苦)在那裏搜索這些信息? – JohnLBevan