2013-04-16 12 views

उत्तर

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 
+2

भी स्पष्टीकरण के कुछ प्रकार प्रदान करें, जबकि सवालों का जवाब दे .. – Lal

+0

अपने कोड का एक संक्षिप्त विवरण जोड़ें। कोड-केवल उत्तर (कभी-कभी) अच्छे होते हैं लेकिन कोड + स्पष्टीकरण उत्तर (हमेशा) बेहतर होते हैं। – Barranka

4

क्योंकि यह एक एक के बजाय में शामिल होने कहां मौजूद है या COLUMNPROPERTY के लिए एक कॉल का उपयोग करता है मैं इस दृष्टिकोण की तरह। ध्यान दें कि द्वारा समूह केवल आवश्यक है जब आप एक) एक से अधिक पहचान स्तंभ के साथ टेबल है और डुप्लिकेट परिणाम ख) नहीं करना चाहती:

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

OBJECT_NAME चुनें (object_id) rrom sys.identity_columns जहां is_identity = 1;

0

नीचे स्क्रिप्ट करना होगा:

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 
संबंधित मुद्दे