SQL Server'da 'tabloyu tanımla' eşdeğeri nedir?


321

Bir SQL Server veritabanım var ve hangi sütunları ve türleri olduğunu bilmek istiyorum. Bunu Enterprise Manager gibi bir GUI kullanmak yerine bir sorgu yoluyla yapmayı tercih ederim. Bunu yapmanın bir yolu var mı?


1
Başka bir stackoverflow [soru] [1] bunu yanıtladı [1]: stackoverflow.com/questions/11078106/…
Shiva

Microsoft'un bu seçeneği neden daha önce koymadığını anlamıyorum. Bunun işlevselliği olmalıdır.
Sukumaar

Yanıtlar:


342

Sp_columns saklı yordamını kullanabilirsiniz :

exec sp_columns MyTable

1
Teşekkürler - Aynı soruyu MSSQL yerine T-SQL ile göndermek üzereydim.
Jedidja

11
Kısa bir not: Tablo adını tırnak içine almayın ve TableOwner.TableName sözdizimini kullanmayın.
Gezim

1
Bu sorguyu çalıştırdığınızda sonuç almıyorsanız buraya bakın .
mlissner

12
saklı bir yordam kullanmak istemiyorsanız Select * From Information_SCHEMA.COLUMNS işlevini kullanın. Nerede TABLE_NAME = 'TABLENAME'
Matias Elorriaga

1
Sp_columns çıktısı, muazzam terminal genişliklerinde bile sqlcmd cinsinden gülünç şekilde okunamıyor. Aşağıda bulunan çözümler selectsqlcmd kullanıcıları için çok daha uygundur.
ctpenrose

123

Bir tablo hakkında meta veri almanın birkaç yöntemi vardır:

EXEC sp_help tablename

Tabloyu, sütunları ve kısıtlamaları tanımlayan birkaç sonuç kümesi döndürür.

Ne INFORMATION_SCHEMAyazık ki görünümleri sorgulamanız ve manuel olarak bunlara katılmanız gerekmesine rağmen, görünümler size istediğiniz bilgileri verecektir.


7
Benim için "@" karakteri olmadan çalıştı EXEC sp_help 'table_name'
Ali

bu Viranja'nın cevabının daha doğru bir versiyonudur. @Ancak yanlış sözdizimi.
pcnate

@tablenameÖrnekte bir değişken gibi görünüyor . Sp, bir dize ya da 'düz' tablename ( exec sp_help Employeesya da exec sp_help 'Employees') ile her iki şekilde çalışır
KekuSemau

Bilginize: Şema (ve hatta Veritabanı) execute sp_help 'db.sch.your_table
kenelere

53

Saklı proc kullanmak istemiyorsanız, basit bir sorgu sürümü

select * 
  from information_schema.columns 
 where table_name = 'aspnet_Membership'
 order by ordinal_position

1
Benim durumumda bu, herhangi bir nedenden ötürü saklanan proc'ların mevcut olmaması durumunda da geçerlidir.
James Mills

Depolanan proc esnek ve gerçekten benim gibi sqlcmd kullanıcıları için düşmanca
ctpenrose

Bunu ada göre sipariş ettiği gibi seviyorum: D
Marin

33

Aşağıdakileri kullanabilirsiniz

sp_help tablename

Örnek: sp_help Müşteri

VEYA Kısayolu Kullan

  • tablo seç Alt + F1 tuşlarına basın

Örnek: Müşteri Alt + F1 tuşlarına basın


Tablonun kullanıcı tanımlı bir şemada varsa, onu sorgudan hariç tutmanız gerektiğini unutmayın. Bu ada sahip bir tablo içeren tüm şema, sonuç kümesinde "TABLE_OWNER" adlı bir sütunda görünecektir.
Buggieboy

Kısayolun çalışması için tablo / görünüm / prosedürün tam olarak seçilmesi gerektiğini unutmayın. SSMS seçimi otomatik olarak genişletmez (bunu beklerdim). Ctrl+Wseçimi genişletmek ve tüm adı seçmek için kullanılabilir.
bugybunny

29

Bu Sorguyu Kullan

Select * From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME = 'TABLENAME'

1
Önce "MyDatabase kullan" derseniz benim için çalışır.
Jason D

MySQL üzerinde de çalıştığı için bunu beğendim, bu yüzden
Abdul

1
Bu yanıt, 5 yıl önce gelen stackoverflow.com/a/319424/695671 adresinden farklı değildir . Tekrarlanan cevapları yararlı bulmuyorum.
Jason S

15

Diğer cevaplarda gösterilen yollara ek olarak,

SELECT TOP 0 * FROM table_name

Bu, içinde hiçbir sonuç bulunmayan her bir sütunun adını verecektir ve neredeyse minimum ek yük ile neredeyse anında tamamlanacaktır.


TOP 1, daha açıklayıcı olabilecek bir örnek veri de verecektir.
Spurgeon

14

Lütfen aşağıdaki sql sorgusunu kullanın; bu benim durumum için çalıştı.

select * FROM   INFORMATION_SCHEMA.Columns where table_name = 'tablename';

2
Aynı cevap 2008 ve 2014 yıllarında da verilmiştir. Tekrarlanan cevapları yararlı bulmuyorum.
Jason S

14

Sadece tabloyu seçin ve Alt+ tuşuna basın F1,

Sütun adı, veri türü, anahtarlar vb.Gibi tablo hakkındaki tüm bilgileri gösterecektir.


7
OP,
GUI'sız bir

7

Ben t gibi bir sql * artı DESC (KABUR) yazdı (sütun yorumları da görüntüler) t-sql:

USE YourDB
GO

DECLARE @objectName NVARCHAR(128) = 'YourTable';

SELECT
  a.[NAME]
 ,a.[TYPE]
 ,a.[CHARSET]
 ,a.[COLLATION]
 ,a.[NULLABLE]
 ,a.[DEFAULT]
 ,b.[COMMENTS]
-- ,a.[ORDINAL_POSITION]
FROM
  (
    SELECT
      COLUMN_NAME                                     AS [NAME]
     ,CASE DATA_TYPE
        WHEN 'char'       THEN DATA_TYPE  + '(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + ')'
        WHEN 'numeric'    THEN DATA_TYPE  + '(' + CAST(NUMERIC_PRECISION AS VARCHAR) + ', ' + CAST(NUMERIC_SCALE AS VARCHAR) + ')'
        WHEN 'nvarchar'   THEN DATA_TYPE  + '(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + ')'
        WHEN 'varbinary'  THEN DATA_TYPE + '(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + ')'
        WHEN 'varchar'    THEN DATA_TYPE   + '(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + ')'
        ELSE DATA_TYPE
      END                                             AS [TYPE]
     ,CHARACTER_SET_NAME                              AS [CHARSET]
     ,COLLATION_NAME                                  AS [COLLATION]
     ,IS_NULLABLE                                     AS [NULLABLE]
     ,COLUMN_DEFAULT                                  AS [DEFAULT]
     ,ORDINAL_POSITION
    FROM   
      INFORMATION_SCHEMA.COLUMNS
    WHERE
      TABLE_NAME = @objectName
  ) a
  FULL JOIN
  (
   SELECT
     CAST(value AS NVARCHAR)                        AS [COMMENTS]
    ,CAST(objname AS NVARCHAR)                      AS [NAME]
   FROM
     ::fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'table', @objectName, 'column', default)
  ) b
  ON a.NAME COLLATE YourCollation = b.NAME COLLATE YourCollation
ORDER BY
  a.[ORDINAL_POSITION];

Yukarıda belirtilen seçim, saklı yordam olarak işaretlenmiş bir sistemde kullanılabilir ve örneğin herhangi bir veritabanından basit bir şekilde çağrılabilir:

USE master;
GO

IF OBJECT_ID('sp_desc', 'P') IS NOT NULL
  DROP PROCEDURE sp_desc
GO

CREATE PROCEDURE sp_desc (
  @tableName  nvarchar(128)
) AS
BEGIN
  DECLARE @dbName       sysname;
  DECLARE @schemaName   sysname;
  DECLARE @objectName   sysname;
  DECLARE @objectID     int;
  DECLARE @tmpTableName varchar(100);
  DECLARE @sqlCmd       nvarchar(4000);

  SELECT @dbName = PARSENAME(@tableName, 3);
  IF @dbName IS NULL SELECT @dbName = DB_NAME();

  SELECT @schemaName = PARSENAME(@tableName, 2);
  IF @schemaName IS NULL SELECT @schemaName = SCHEMA_NAME();

  SELECT @objectName = PARSENAME(@tableName, 1);
  IF @objectName IS NULL
    BEGIN
      PRINT 'Object is missing from your function call!';
      RETURN;
    END;

  SELECT @objectID = OBJECT_ID(@dbName + '.' + @schemaName + '.' + @objectName);
  IF @objectID IS NULL
    BEGIN
      PRINT 'Object [' + @dbName + '].[' + @schemaName + '].[' + @objectName + '] does not exist!';
      RETURN;
    END;

  SELECT @tmpTableName = '#tmp_DESC_' + CAST(@@SPID AS VARCHAR) + REPLACE(REPLACE(REPLACE(REPLACE(CAST(CONVERT(CHAR, GETDATE(), 121) AS VARCHAR), '-', ''), ' ', ''), ':', ''), '.', '');
  --PRINT @tmpTableName;
  SET @sqlCmd = '
    USE ' + @dbName + '
    CREATE TABLE ' + @tmpTableName + ' (
      [NAME]              nvarchar(128) NOT NULL
     ,[TYPE]              varchar(50)
     ,[CHARSET]           varchar(50)
     ,[COLLATION]         varchar(50)
     ,[NULLABLE]          varchar(3)
     ,[DEFAULT]           nvarchar(4000)
     ,[COMMENTS]          nvarchar(3750));

    INSERT INTO ' + @tmpTableName + '
    SELECT
      a.[NAME]
     ,a.[TYPE]
     ,a.[CHARSET]
     ,a.[COLLATION]
     ,a.[NULLABLE]
     ,a.[DEFAULT]
     ,b.[COMMENTS]
    FROM
      (
        SELECT
          COLUMN_NAME                                     AS [NAME]
         ,CASE DATA_TYPE
            WHEN ''char''      THEN DATA_TYPE + ''('' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + '')''
            WHEN ''numeric''   THEN DATA_TYPE + ''('' + CAST(NUMERIC_PRECISION AS VARCHAR) + '', '' + CAST(NUMERIC_SCALE AS VARCHAR) + '')''
            WHEN ''nvarchar''  THEN DATA_TYPE + ''('' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + '')''
            WHEN ''varbinary'' THEN DATA_TYPE + ''('' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + '')''
            WHEN ''varchar''   THEN DATA_TYPE + ''('' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + '')''
            ELSE DATA_TYPE
          END                                             AS [TYPE]
         ,CHARACTER_SET_NAME                              AS [CHARSET]
         ,COLLATION_NAME                                  AS [COLLATION]
         ,IS_NULLABLE                                     AS [NULLABLE]
         ,COLUMN_DEFAULT                                  AS [DEFAULT]
         ,ORDINAL_POSITION
        FROM   
          INFORMATION_SCHEMA.COLUMNS
        WHERE   
          TABLE_NAME = ''' + @objectName + '''
      ) a
      FULL JOIN
      (
         SELECT
           CAST(value AS NVARCHAR)                        AS [COMMENTS]
          ,CAST(objname AS NVARCHAR)                      AS [NAME]
         FROM
           ::fn_listextendedproperty (''MS_Description'', ''user'', ''' + @schemaName + ''', ''table'', ''' + @objectName + ''', ''column'', default)
      ) b
      ON a.NAME COLLATE Hungarian_CI_AS = b.NAME COLLATE Hungarian_CI_AS
    ORDER BY
      a.[ORDINAL_POSITION];

    SELECT * FROM ' + @tmpTableName + ';'

    --PRINT @sqlCmd;

    EXEC sp_executesql @sqlCmd;
    RETURN;
END;
GO

EXEC sys.sp_MS_marksystemobject sp_desc
GO

Yordam türünü yürütmek için:

EXEC sp_desc 'YourDB.YourSchema.YourTable';

Bir açıklama almak istiyorsanız, geçerli veritabanının (ve şemanın) bir nesnesi basit yazın:

EXEC sp_desc 'YourTable';

Sp_desc sistem işaretli bir prosedür olduğundan, exec komutunu da bırakabilirsiniz (yine de önerilmez):

sp_desc 'YourTable';

6

Oracle'ın describekomutuna eşdeğer SQL Server , depolanan procsp_help

describeKomut size vb sütun adları, tipleri, uzunluk, hakkında bilgi verir

SQL Server'da, 'mydb' veritabanındaki 'myysema' şemasında 'mytable' tablosunu tanımlamak istediğinizi varsayalım, şunları yapabilirsiniz:

USE mydb;
exec sp_help 'myschema.mytable';


2

Bu cevaplarla ilgili sorun, önemli bilgileri kaçırmanızdır. Bu biraz dağınık olsa da bu MySQL Describe görüntüler aynı bilgi içerdiğinden emin olmak için geldi hızlı bir sürümüdür.

Select SC.name AS 'Field', ISC.DATA_TYPE AS 'Type', ISC.CHARACTER_MAXIMUM_LENGTH AS 'Length', SC.IS_NULLABLE AS 'Null', I.is_primary_key AS 'Key', SC.is_identity AS 'Identity'
From sys.columns AS SC 
LEFT JOIN sys.index_columns AS IC
ON IC.object_id = OBJECT_ID('dbo.Expenses') AND 
IC.column_id = SC.column_id
LEFT JOIN sys.indexes AS I 
ON I.object_id = OBJECT_ID('dbo.Expenses') AND 
IC.index_id = I.index_id
LEFT JOIN information_schema.columns ISC
ON ISC.TABLE_NAME = 'Expenses'
AND ISC.COLUMN_NAME = SC.name
WHERE SC.object_id = OBJECT_ID('dbo.Expenses')

is_primary_key'in asla bir değerinin olmamasının bir nedeni var mı?
Michael

2

Bu, EntityFramework Reverse POCO Generator( burada bulunabilir ) içinde kullandığım kod

Tablo SQL:

SELECT  c.TABLE_SCHEMA AS SchemaName,
        c.TABLE_NAME AS TableName,
        t.TABLE_TYPE AS TableType,
        c.ORDINAL_POSITION AS Ordinal,
        c.COLUMN_NAME AS ColumnName,
        CAST(CASE WHEN IS_NULLABLE = 'YES' THEN 1
                  ELSE 0
             END AS BIT) AS IsNullable,
        DATA_TYPE AS TypeName,
        ISNULL(CHARACTER_MAXIMUM_LENGTH, 0) AS [MaxLength],
        CAST(ISNULL(NUMERIC_PRECISION, 0) AS INT) AS [Precision],
        ISNULL(COLUMN_DEFAULT, '') AS [Default],
        CAST(ISNULL(DATETIME_PRECISION, 0) AS INT) AS DateTimePrecision,
        ISNULL(NUMERIC_SCALE, 0) AS Scale,
        CAST(COLUMNPROPERTY(OBJECT_ID(QUOTENAME(c.TABLE_SCHEMA) + '.' + QUOTENAME(c.TABLE_NAME)), c.COLUMN_NAME, 'IsIdentity') AS BIT) AS IsIdentity,
        CAST(CASE WHEN COLUMNPROPERTY(OBJECT_ID(QUOTENAME(c.TABLE_SCHEMA) + '.' + QUOTENAME(c.TABLE_NAME)), c.COLUMN_NAME, 'IsIdentity') = 1 THEN 1
                  WHEN COLUMNPROPERTY(OBJECT_ID(QUOTENAME(c.TABLE_SCHEMA) + '.' + QUOTENAME(c.TABLE_NAME)), c.COLUMN_NAME, 'IsComputed') = 1 THEN 1
                  WHEN DATA_TYPE = 'TIMESTAMP' THEN 1
                  ELSE 0
             END AS BIT) AS IsStoreGenerated,
        CAST(CASE WHEN pk.ORDINAL_POSITION IS NULL THEN 0
                  ELSE 1
             END AS BIT) AS PrimaryKey,
        ISNULL(pk.ORDINAL_POSITION, 0) PrimaryKeyOrdinal,
        CAST(CASE WHEN fk.COLUMN_NAME IS NULL THEN 0
                  ELSE 1
             END AS BIT) AS IsForeignKey
FROM    INFORMATION_SCHEMA.COLUMNS c
        LEFT OUTER JOIN (SELECT u.TABLE_SCHEMA,
                                u.TABLE_NAME,
                                u.COLUMN_NAME,
                                u.ORDINAL_POSITION
                         FROM   INFORMATION_SCHEMA.KEY_COLUMN_USAGE u
                                INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
                                    ON u.TABLE_SCHEMA = tc.CONSTRAINT_SCHEMA
                                       AND u.TABLE_NAME = tc.TABLE_NAME
                                       AND u.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
                         WHERE  CONSTRAINT_TYPE = 'PRIMARY KEY') pk
            ON c.TABLE_SCHEMA = pk.TABLE_SCHEMA
               AND c.TABLE_NAME = pk.TABLE_NAME
               AND c.COLUMN_NAME = pk.COLUMN_NAME
        LEFT OUTER JOIN (SELECT DISTINCT
                                u.TABLE_SCHEMA,
                                u.TABLE_NAME,
                                u.COLUMN_NAME
                         FROM   INFORMATION_SCHEMA.KEY_COLUMN_USAGE u
                                INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
                                    ON u.TABLE_SCHEMA = tc.CONSTRAINT_SCHEMA
                                       AND u.TABLE_NAME = tc.TABLE_NAME
                                       AND u.CONSTRAINT_NAME = tc.CONSTRAINT_NAME
                         WHERE  CONSTRAINT_TYPE = 'FOREIGN KEY') fk
            ON c.TABLE_SCHEMA = fk.TABLE_SCHEMA
               AND c.TABLE_NAME = fk.TABLE_NAME
               AND c.COLUMN_NAME = fk.COLUMN_NAME
        INNER JOIN INFORMATION_SCHEMA.TABLES t
            ON c.TABLE_SCHEMA = t.TABLE_SCHEMA
               AND c.TABLE_NAME = t.TABLE_NAME
WHERE c.TABLE_NAME NOT IN ('EdmMetadata', '__MigrationHistory')

Yabancı Anahtar SQL:

SELECT  FK.name AS FK_Table,
        FkCol.name AS FK_Column,
        PK.name AS PK_Table,
        PkCol.name AS PK_Column,
        OBJECT_NAME(f.object_id) AS Constraint_Name,
        SCHEMA_NAME(FK.schema_id) AS fkSchema,
        SCHEMA_NAME(PK.schema_id) AS pkSchema,
        PkCol.name AS primarykey,
        k.constraint_column_id AS ORDINAL_POSITION
FROM    sys.objects AS PK
        INNER JOIN sys.foreign_keys AS f
            INNER JOIN sys.foreign_key_columns AS k
                ON k.constraint_object_id = f.object_id
            INNER JOIN sys.indexes AS i
                ON f.referenced_object_id = i.object_id
                   AND f.key_index_id = i.index_id
            ON PK.object_id = f.referenced_object_id
        INNER JOIN sys.objects AS FK
            ON f.parent_object_id = FK.object_id
        INNER JOIN sys.columns AS PkCol
            ON f.referenced_object_id = PkCol.object_id
               AND k.referenced_column_id = PkCol.column_id
        INNER JOIN sys.columns AS FkCol
            ON f.parent_object_id = FkCol.object_id
               AND k.parent_column_id = FkCol.column_id
ORDER BY FK_Table, FK_Column

Genişletilmiş Özellikler:

SELECT  s.name AS [schema],
        t.name AS [table],
        c.name AS [column],
        value AS [property]
FROM    sys.extended_properties AS ep
        INNER JOIN sys.tables AS t
            ON ep.major_id = t.object_id
        INNER JOIN sys.schemas AS s
            ON s.schema_id = t.schema_id
        INNER JOIN sys.columns AS c
            ON ep.major_id = c.object_id
               AND ep.minor_id = c.column_id
WHERE   class = 1
ORDER BY t.name

1

kullanım

SELECT COL_LENGTH('tablename', 'colname')

Başka hiçbir çözüm benim için işe yaramadı.


bu, diğer sütunların ne olduğunu bilmeyi gerektirir. Ayrıca aa yazım hatası var
pcnate

Alıntı düzeltildi.
nikeee

1

Bu biçimi seviyorum:

name     DataType      Collation             Constraints         PK  FK          Comment

id       int                                 NOT NULL IDENTITY   PK              Order Line Id
pid      int                                 NOT NULL                tbl_orders  Order Id
itemCode varchar(10)   Latin1_General_CI_AS  NOT NULL                            Product Code

Bu yüzden kullandım:

DECLARE @tname varchar(100) = 'yourTableName';

SELECT  col.name,

        CASE typ.name
            WHEN 'nvarchar' THEN 'nvarchar('+CAST((col.max_length / 2) as varchar)+')'
            WHEN 'varchar' THEN 'varchar('+CAST(col.max_length as varchar)+')'
            WHEN 'char' THEN 'char('+CAST(col.max_length as varchar)+')'
            WHEN 'nchar' THEN 'nchar('+CAST((col.max_length / 2) as varchar)+')'
            WHEN 'binary' THEN 'binary('+CAST(col.max_length as varchar)+')'
            WHEN 'varbinary' THEN 'varbinary('+CAST(col.max_length as varchar)+')'
            WHEN 'numeric' THEN 'numeric('+CAST(col.precision as varchar)+(CASE WHEN col.scale = 0 THEN '' ELSE ','+CAST(col.scale as varchar) END) +')'
            WHEN 'decimal' THEN 'decimal('+CAST(col.precision as varchar)+(CASE WHEN col.scale = 0 THEN '' ELSE ','+CAST(col.scale as varchar) END) +')'
            ELSE typ.name
            END DataType,

        ISNULL(col.collation_name,'') Collation,

        CASE WHEN col.is_nullable = 0 THEN 'NOT NULL ' ELSE '' END + CASE WHEN col.is_identity = 1 THEN 'IDENTITY' ELSE '' END Constraints,

        ISNULL((SELECT 'PK'
                FROM    sys.key_constraints kc INNER JOIN
                        sys.tables tb ON tb.object_id = kc.parent_object_id INNER JOIN
                        sys.indexes si ON si.name = kc.name INNER JOIN
                        sys.index_columns sic ON sic.index_id = si.index_id AND sic.object_id = si.object_id
                WHERE kc.type = 'PK'
                  AND tb.name = @tname
                  AND sic.column_id = col.column_id),'') PK,

        ISNULL((SELECT (SELECT name FROM sys.tables st WHERE st.object_id = fkc.referenced_object_id)
                FROM    sys.foreign_key_columns fkc INNER JOIN
                        sys.columns c ON c.column_id = fkc.parent_column_id AND fkc.parent_object_id = c.object_id INNER JOIN
                        sys.tables t ON t.object_id = c.object_id
                WHERE t.name = tab.name
                  AND c.name = col.name),'') FK,

        ISNULL((SELECT value
                FROM sys.extended_properties
                WHERE major_id = tab.object_id
                  AND minor_id = col.column_id),'') Comment

FROM sys.columns col INNER JOIN
     sys.tables tab ON tab.object_id = col.object_id INNER JOIN
     sys.types typ ON typ.system_type_id = col.system_type_id
WHERE tab.name = @tname
  AND typ.name != 'sysname'
ORDER BY col.column_id;

1
SELECT C.COLUMN_NAME, C.IS_NULLABLE, C.DATA_TYPE, TC.CONSTRAINT_TYPE, C.COLUMN_DEFAULT
    FROM INFORMATION_SCHEMA.COLUMNS AS C
    FULL JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS CC ON C.COLUMN_NAME = CC.COLUMN_NAME 
    FULL JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC ON CC.CONSTRAINT_NAME = TC.CONSTRAINT_NAME
WHERE C.TABLE_NAME = '<Table Name>';

Örnek Çıktı


SO hoş geldiniz! Bir soruya cevap verdiğinizde, cevabınızı biraz açıklamaya çalışın. Sizin durumunuzda, 16 yanıt daha var, bu yüzden cevabınızın Artılarını ve Eksilerini ortaya
çıkarmalısınız

1

Brent Ozar ekibinden FirstResponderKit kullanıyorsanız , bu sorguyu da çalıştırabilirsiniz:

exec sp_blitzindex @tablename='MyTable'

Tablo ile ilgili tüm bilgileri döndürür:

  • kullanım istatistikleri (okuma, yazma, kilitler, vb.), kullanılan alan ve diğer
  • eksik dizinler
  • sütunlar
  • Yabancı anahtarlar
  • istatistik içeriği sp_BlitzIndex örneği

Tabii ki bir sistem değil ve sp_help veya sp_columns gibi evrensel bir stp değil , ama tablonuzla ilgili tüm olası bilgileri döndürür ve bence onu ortamınızda yaratmaya ve burada bahsetmeye değer.


1

Tablo adına çift tıklayın ve Alt + F1 tuşlarına basın


0
CREATE PROCEDURE [dbo].[describe] 
( 
@SearchStr nvarchar(max) 
) 
AS 
BEGIN 
SELECT  
    CONCAT([COLUMN_NAME],' ',[DATA_TYPE],' ',[CHARACTER_MAXIMUM_LENGTH],' ', 
    (SELECT CASE [IS_NULLABLE] WHEN 'NO' THEN 'NOT NULL' ELSE 'NULL' END),
    (SELECT CASE WHEN [COLUMN_DEFAULT] IS NULL THEN '' ELSE CONCAT(' DEFAULT ',[COLUMN_DEFAULT]) END)
    ) AS DESCRIPTION
    FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE @SearchStr
END 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.