2010-11-30 1 views
1

Sysobjectsテーブルが2つの列xtypetypeを持っている理由を教えてもらえますか?どちらもデータ型がchar(2)であり、オブジェクト型を格納します。xtype対sysobjectsの型の列

+1

一部のオブジェクトタイプの値は、たとえば主キー制約と異なります。 –

答えて

2

私はtypeがまだ新しいビューにあると考えています。 xtypeは、下位互換性のためにそこにあります。

注:

sys.sysobjectsremoved in future versionsになり、あなたの代わりにsys.objectsを使用する必要があることが表示されます。

+0

SQL Server 2005を使用しています。SQL 2000に列xtypeが存在しなかったことを意味しますか? –

+0

@ Nadeem - 元の回答に誤植があり、間違っていました。 'xtype'はSQL2Kに存在しました。 'type'は今後使用されます。 – codingbadger

0

あなたはので、彼らだけかどうかUQPKが異なるかKかないように示さ現れる

CREATE VIEW sys.sysobjects AS 
SELECT 
/*... Snip ...*/ 
xtype = type collate database_default, 
/*... Snip ...*/ 
type = convert(char(2), case type 
    when 'UQ' then 'K' when 'PK' then 'K' 
    else type collate database_default end), 
/*... Snip ...*/ 
FROM sys.sysschobjs 

を与えますsysobjects

select OBJECT_DEFINITION(OBJECT_ID('sysobjects')) 
AS [processing-instruction(x)] FOR XML PATH('') 

の定義を見ることができます。