Neden sys.columns ve INFORM_SCHEMA.COLUMNS farklı sayıda sütun görüntülüyor?


11

Belirli bir ada sahip sütunları görüntülemek için iki yöntem deniyorum:

  1. information_schema.columns

    SELECT *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME='SUPPLIER_NAME';
  2. SYS.COLUMNS

    SELECT *
    FROM SYS.COLUMNS
    WHERE NAME='SUPPLIER_NAME'

Sorgular neden farklı çıktılar gösteriyor?

SSMS ekran yakalama


Veritabanımda sadece 4 Sütun var.Ancak sys.columns kullanarak kötü görüntüleme 5 Kayıt i yok hayır Neden?
Vinoth _S

3
INFORMATION_SCHEMA.COLUMNSSadece bir görünümü üzerinde olan sys.columnsbu INNER JOINkadar s sys.objectsTablo veya Görünüm nesne türlerine ve kısıtlar. Benim tahminim, kayıtlarınızdan birinin sys.columnsbu kısıtlamada elimine edilmesi.
Mark Sinkinson

1
İkisi de biraz farklı. Lütfen okuyun mssqltips.com/sqlservertutorial/183/informationschemacolumns ve msdn.microsoft.com/en-us/library/ms176106.aspx Göndermeden önce belgeleri okumalısınız diyebilirim
Shanky

Yanıtlar:


14

Arasındaki fark INFORMATION_SCHEMA.COLUMNSve sys.columnskapsadıkları nesne türü vardır. INFORMATION_SCHEMA.COLUMNStablolar ve görünümlerle sınırlıdır. Bunu yaparak arkasındaki koda bir göz atabilirsiniz:

EXEC sp_helptext [INFORMATION_SCHEMA.COLUMNS]

Nerede olan maddenin alt kısmına bakarsanız,

o.type IN ('U', 'V')

Burası yalnızca tablo ve görünümlerle sınırlıdır.

Daha sonra sys.columns tanımına baktığınızda, bunun diğer birkaç nesne için sütun içerdiğini göreceksiniz:

  • Tablo değerli montaj fonksiyonları (FT)
  • Satır içi tablo değerli SQL işlevleri (IF)
  • Dahili tablolar (BT)
  • Sistem tabloları (S)
  • Tablo değerli SQL işlevleri (TF)

Bunu çalıştırın ve ekstra nesnenin ne olduğunu ve ne tür olduğunu görebilirsiniz.

SELECT OBJECT_SCHEMA_NAME(object_id), OBJECT_NAME(object_id), 
    OBJECTPROPERTYEX(object_id, 'BASETYPE'), *
FROM sys.columns
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.