Όταν είσαι σε open space office φτάνουν στα αυτιά σου διάφορα. Έχεις μάθει να μην δίνεις σημασία και να κάνεις την δουλεία σου. Βέβαια αν είσαι geek υπάρχουν λέξεις κλειδιά που σε κάνουν να δώσει προσοχή στα λεγόμενα.
Δύο συνάδελφοι κάτι έφτιαχναν και ο ένας από αυτούς εκστόμισε λέξεις όπως table, script, identity, sql server. Όπως ήταν φυσικό αυτές οι λέξεις πυροδότησαν τους αντίστοιχους attention trigger του εγκεφάλου μου.
Ο συνάδελφος αυτός ήθελε να βρει τους πίνακες που έχουν identity fields μέσα σε μια βάση και έψαχνε έναν ένα πίνακα μέσα στον SSMS και όπως γίνεται πάντα διαμαρτύρονταν γιατί δεν υπάρχει κάτι που να το δείχνει συγκεντρωτικά στον SSMS με το πάτημα ενός κουμπιού.
Κάτι τέτοιος δεν υπάρχει αλλά δεν είναι πυρηνική φυσική για να το μάθεις αρκεί να είσαι εξοικειωμένος με τα metadata του SQL Server.
Αυτό λοιπόν είναι εύκολο να το πάρεις σαν πληροφορία με ένα από τα παρακάτω queries. Διαλέξτε και εκτελέστε όποιο θέλετε.
SELECT T.TABLE_SCHEMA, C.TABLE_NAME,C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS C
INNER JOIN INFORMATION_SCHEMA.TABLES AS T
ON T.TABLE_SCHEMA=C.TABLE_SCHEMA
AND
T.TABLE_NAME = C.TABLE_NAME
WHERE COLUMNPROPERTY(object_id(C.TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1
AND T.TABLE_TYPE='BASE TABLE'
ORDER BY C.TABLE_NAME;
GO
SELECT SCHEMA_NAME(o.schema_id) AS SchemaName
,o.name as TableName,c.name as ColumnName
FROM sys.objects o
INNER JOIN sys.columns c on o.object_id = c.object_id
WHERE c.is_identity = 1
AND O.type='U';
GO
SELECT SCHEMA_NAME(CAST (OBJECTPROPERTYEX(object_id,'SchemaID') AS INT)) as SchemaName,
OBJECT_NAME(object_id) AS TableName,
name as ColumnName
FROM sys.columns
WHERE is_identity = 1 AND OBJECTPROPERTYEX(object_id,'IsUserTable')=1;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
, t.name AS table_name
, c.name AS column_name
, seed_value
, increment_value
, last_value
FROM sys.tables AS t
JOIN sys.identity_columns c ON t.object_id = c.object_id
ORDER BY schema_name, table_name;
GO
Με την σειρά να και τα αποτελέσματα των παραπάνω metadata queries χρησιμοποιώντας την Northwind database
/*antonch*/