40

SQL Serverを使用してデータベースで作成されたすべてのユーザー定義型を列挙CREATE TYPEするか、それらが既に定義されているかどうかを確認する必要があります。

テーブルまたはストアド プロシージャを使用すると、次のようになります。

if exists (select * from dbo.sysobjects where name='foobar' and xtype='U')
    drop table foobar

ただし、ユーザー定義型に相当するもの (または適切な代替手段) が見つかりません! 私は間違いなくどこにもそれらを見ることができませんsysobjects.

誰でも私を啓発できますか?

4

3 に答える 3

83

型と UDT は sys.objects には表示されません。次の方法で、探しているものを取得できるはずです。

select * from sys.types
where is_user_defined = 1
于 2008-09-10T15:53:12.230 に答える
16

投稿は古いですが、これに似たクエリを使用すると便利であることがわかりました。一部の書式設定は役に立たないかもしれませんが、完全修飾型名が必要で、列を順番に並べて表示したかったのです。SUBSTRING のものをすべて削除して、列名を単独で取得することができます。

SELECT USER_NAME(TYPE.schema_id) + '.' + TYPE.name      AS "Type Name",
       COL.column_id,
       SUBSTRING(CAST(COL.column_id + 100 AS char(3)), 2, 2)  + ': ' + COL.name   AS "Column",
       ST.name                                          AS "Data Type",
       CASE COL.Is_Nullable
       WHEN 1 THEN ''
       ELSE        'NOT NULL' 
       END                                              AS "Nullable",
       COL.max_length                                   AS "Length",
       COL.[precision]                                  AS "Precision",
       COL.scale                                        AS "Scale",
       ST.collation                                     AS "Collation"
FROM sys.table_types TYPE
JOIN sys.columns     COL
    ON TYPE.type_table_object_id = COL.object_id
JOIN sys.systypes AS ST  
    ON ST.xtype = COL.system_type_id
where TYPE.is_user_defined = 1
ORDER BY "Type Name",
         COL.column_id
于 2015-07-21T21:22:08.470 に答える