Ich möchte lernen, wie man eine Liste aller Tabellen mit Identitätsspalten aus einer MS SQL Datenbank holt.Wie bekomme ich eine Liste aller Tabellen mit Identitätsspalten?
16
A
Antwort
35
SELECT
[schema] = s.name,
[table] = t.name
FROM sys.schemas AS s
INNER JOIN sys.tables AS t
ON s.[schema_id] = t.[schema_id]
WHERE EXISTS
(
SELECT 1 FROM sys.identity_columns
WHERE [object_id] = t.[object_id]
);
7
select COLUMN_NAME, TABLE_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'dbo'
and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1
order by TABLE_NAME
4
Ich mag diesen Ansatz, weil es eine Verknüpfung statt einer uses WHERE EXISTS oder ein Aufruf an COLUMN. Beachten Sie, dass die Gruppe nur erforderlich, wenn Sie a) haben Tabellen mit mehr als einer Identity-Spalte und b) nicht wollen, doppelte Ergebnisse:
SELECT
SchemaName = s.name,
TableName = t.name
FROM
sys.schemas AS s
INNER JOIN sys.tables AS t ON s.schema_id = t.schema_id
INNER JOIN sys.columns AS c ON t.object_id = c.object_id
INNER JOIN sys.identity_columns AS ic on c.object_id = ic.object_id AND c.column_id = ic.column_id
GROUP BY
s.name,
t.name
ORDER BY
s.name,
t.name;
-1
Select OBJECT_NAME (object_id) Rrom sys.identity_columns wo is_identity = 1;
0
Das Skript unten tun:
SELECT a.name as TableName,
CASE WHEN b.name IS NULL
THEN 'No Identity Column'
ELSE b.name
END as IdentityColumnName
FROM sys.tables a
LEFT JOIN sys.identity_columns b on a.object_id = b.object_id
Bitte geben Sie eine Art von Erklärungen zu, während Fragen zu beantworten .. – Lal
Bitte fügen Sie eine kurze Erklärung des Codes. Code-only-Antworten sind (manchmal) gut, aber Code + Erklärungen sind (immer) besser. – Barranka