2017-08-11 2 views
1

のSQLテキストを取得し、あなたがsys.sql_modules機能やトリガーを作成するときにUDT

にその作成コマンドを見つけるしかし、私は何を見つけることができないようすると、UDTのために同じであることができます。

私はそれがsys.sql_modulesに表示doesntのこの

CREATE TYPE dbo.UserIds AS TABLE (value int NOT NULL PRIMARY KEY); 

のようなタイプを作成する場合。

私は見つけることができる唯一の情報は

select * from sys.types where is_user_defined = 1 

sys.typesからですが、何のSQL文はありません。だから私はそれを見つけるのですか?

+1

がいかに複雑なアイデアを与えることです。ここでは

は、私が持っているものです。私はサンプルを提供します – lad2025

+0

@ G.SAbhaypal誰が 'sys.objects'について何か言っていますか? – lad2025

答えて

1

あなたはメタデータからテーブル型と列に関する情報を得ることができます:あなたはDDL文を再作成することができ、その情報に基づいて

CREATE TYPE dbo.UserIds AS TABLE (value int NOT NULL PRIMARY KEY); 

-- 
DECLARE @name SYSNAME = 'UserIds'; 

SELECT sch = SCHEMA_NAME(t.schema_id) 
    ,t.name 
    ,type  = TYPE_NAME(t.user_type_id) 
    ,c.name 
    ,col_type = TYPE_NAME(c.user_type_id) 
    ,c.is_nullable 
    --.... more info about max_length (if text) and so on 
FROM sys.table_types t 
JOIN sys.columns c 
    ON t.type_table_object_id = c.object_id 
WHERE t.name = @name; 

EDIT:あなたはスクリプトそれをしたい場合は

最も簡単な方法は、SSMSを使用することです。 Right-click - >Script object as(単純型の場合も同じです)。

enter image description here

+0

誰かがPKまたはユニークでテーブルを宣言した場合、TYPE定義にインデックスを含めることができるのでそれでは不十分です – sepupic

+0

@sepupic LEFT JOINを 'sys.indexes'に、' sys.index_columns'を解決しなければなりません – lad2025

+0

タイプdont必然的にテーブルにする必要がありますが、私はここで得ることができる最高の情報だと思います。だから私はすぐに答えとしてこれを受け入れてくれるでしょう。どうもありがとうございました。 – CSharpie

0

型およびUDTは、sys.objectsまたはsys.sql_modulesには表示されません。モジュールではなく型であるからです。

UDTのスクリプトを取得するには、sys.typesとsys.schemasをschema_idフィールドに結合する必要があります。まだ解析と変換を行う必要があります。

+0

あなたにはポイントがありますが、それは私の質問に答えません。 – CSharpie

+0

私はちょうど私の投稿を編集しました –

1

それはあなたがLYプロファイラを起動し、あなたのタイプのためのCREATEとしてスクリプトを生成するために、SSMSを求めて自分自身にそれを証明することができ、型定義を取得するにはそう単純ではないのです。

exec sp_executesql N'SELECT 
SCHEMA_NAME(tt.schema_id) AS [Schema], 
tt.name AS [Name] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
WHERE 
([email protected]_msparam_0 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_1)',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000)',@_msparam_0=N'YourType',@_msparam_1=N'dbo' 

exec sp_executesql N'SELECT 
clmns.column_id AS [ID], 
clmns.name AS [Name] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tt.type_table_object_id 
WHERE 
([email protected]_msparam_0 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_1) 
ORDER BY 
[ID] ASC',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000)',@_msparam_0=N'YourType',@_msparam_1=N'dbo' 

exec sp_executesql N'SELECT 
p.name AS [Name] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tt.type_table_object_id 
INNER JOIN sys.extended_properties AS p ON p.major_id=tt.user_type_id AND p.minor_id=clmns.column_id AND p.class=8 
WHERE 
([email protected]_msparam_0)and(([email protected]_msparam_1 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_2)) 
ORDER BY 
[Name] ASC',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000)',@_msparam_0=N'id_banca',@_msparam_1=N'YourType',@_msparam_2=N'dbo' 

exec sp_executesql N'SELECT 
p.name AS [Name] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.extended_properties AS p ON p.major_id=tt.user_type_id AND p.minor_id=0 AND p.class=6 
WHERE 
([email protected]_msparam_0 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_1) 
ORDER BY 
[Name] ASC',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000)',@_msparam_0=N'YourType',@_msparam_1=N'dbo' 

exec sp_executesql N'SELECT 
cstr.name AS [Name] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.check_constraints AS cstr ON cstr.parent_object_id=tt.type_table_object_id 
WHERE 
([email protected]_msparam_0 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_1) 
ORDER BY 
[Name] ASC',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000)',@_msparam_0=N'YourType',@_msparam_1=N'dbo' 


exec sp_executesql N'SELECT 
ISNULL(s1tt.name, N'''') AS [Owner], 
CAST(case when tt.principal_id is null then 1 else 0 end AS bit) AS [IsSchemaOwned], 
tt.name AS [Name], 
tt.type_table_object_id AS [ID], 
SCHEMA_NAME(tt.schema_id) AS [Schema], 
obj.create_date AS [CreateDate], 
obj.modify_date AS [DateLastModified], 
tt.max_length AS [MaxLength], 
tt.is_nullable AS [Nullable], 
ISNULL(tt.collation_name, N'''') AS [Collation], 
CAST(case when tt.is_user_defined = 1 then 1 else 0 end AS bit) AS [IsUserDefined] 
FROM 
sys.table_types AS tt 
LEFT OUTER JOIN sys.database_principals AS s1tt ON s1tt.principal_id = ISNULL(tt.principal_id, (TYPEPROPERTY(QUOTENAME(SCHEMA_NAME(tt.schema_id)) + ''.'' + QUOTENAME(tt.name), ''OwnerId''))) 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
LEFT OUTER JOIN sys.objects AS obj ON obj.object_id = tt.type_table_object_id 
WHERE 
([email protected]_msparam_0 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_1)',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000)',@_msparam_0=N'YourType',@_msparam_1=N'dbo' 


exec sp_executesql N'SELECT 
clmns.name AS [Name], 
clmns.column_id AS [ID], 
clmns.is_nullable AS [Nullable], 
clmns.is_computed AS [Computed], 
CAST(ISNULL(cik.index_column_id, 0) AS bit) AS [InPrimaryKey], 
clmns.is_ansi_padded AS [AnsiPaddingStatus], 
CAST(clmns.is_rowguidcol AS bit) AS [RowGuidCol], 
CAST(ISNULL(COLUMNPROPERTY(clmns.object_id, clmns.name, N''IsDeterministic''),0) AS bit) AS [IsDeterministic], 
CAST(ISNULL(COLUMNPROPERTY(clmns.object_id, clmns.name, N''IsPrecise''),0) AS bit) AS [IsPrecise], 
CAST(ISNULL(cc.is_persisted, 0) AS bit) AS [IsPersisted], 
ISNULL(clmns.collation_name, N'''') AS [Collation], 
CAST(ISNULL((select TOP 1 1 from sys.foreign_key_columns AS colfk where colfk.parent_column_id = clmns.column_id and colfk.parent_object_id = clmns.object_id), 0) AS bit) AS [IsForeignKey], 
clmns.is_identity AS [Identity], 
CAST(ISNULL(ic.seed_value,0) AS bigint) AS [IdentitySeed], 
CAST(ISNULL(ic.increment_value,0) AS bigint) AS [IdentityIncrement], 
(case when clmns.default_object_id = 0 then N'''' when d.parent_object_id > 0 then N'''' else d.name end) AS [Default], 
(case when clmns.default_object_id = 0 then N'''' when d.parent_object_id > 0 then N'''' else schema_name(d.schema_id) end) AS [DefaultSchema], 
(case when clmns.rule_object_id = 0 then N'''' else r.name end) AS [Rule], 
(case when clmns.rule_object_id = 0 then N'''' else schema_name(r.schema_id) end) AS [RuleSchema], 
ISNULL(ic.is_not_for_replication, 0) AS [NotForReplication], 
CAST(COLUMNPROPERTY(clmns.object_id, clmns.name, N''IsFulltextIndexed'') AS bit) AS [IsFullTextIndexed], 
CAST(COLUMNPROPERTY(clmns.object_id, clmns.name, N''StatisticalSemantics'') AS int) AS [StatisticalSemantics], 
CAST(clmns.is_filestream AS bit) AS [IsFileStream], 
CAST(clmns.is_sparse AS bit) AS [IsSparse], 
CAST(clmns.is_column_set AS bit) AS [IsColumnSet], 
usrt.name AS [DataType], 
s1clmns.name AS [DataTypeSchema], 
ISNULL(baset.name, N'''') AS [SystemType], 
CAST(CASE WHEN baset.name IN (N''nchar'', N''nvarchar'') AND clmns.max_length <> -1 THEN clmns.max_length/2 ELSE clmns.max_length END AS int) AS [Length], 
CAST(clmns.precision AS int) AS [NumericPrecision], 
CAST(clmns.scale AS int) AS [NumericScale], 
ISNULL(xscclmns.name, N'''') AS [XmlSchemaNamespace], 
ISNULL(s2clmns.name, N'''') AS [XmlSchemaNamespaceSchema], 
ISNULL((case clmns.is_xml_document when 1 then 2 else 1 end), 0) AS [XmlDocumentConstraint], 
CASE WHEN usrt.is_table_type = 1 THEN N''structured'' ELSE N'''' END AS [UserType] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tt.type_table_object_id 
LEFT OUTER JOIN sys.indexes AS ik ON ik.object_id = clmns.object_id and 1=ik.is_primary_key 
LEFT OUTER JOIN sys.index_columns AS cik ON cik.index_id = ik.index_id and cik.column_id = clmns.column_id and cik.object_id = clmns.object_id and 0 = cik.is_included_column 
LEFT OUTER JOIN sys.computed_columns AS cc ON cc.object_id = clmns.object_id and cc.column_id = clmns.column_id 
LEFT OUTER JOIN sys.identity_columns AS ic ON ic.object_id = clmns.object_id and ic.column_id = clmns.column_id 
LEFT OUTER JOIN sys.objects AS d ON d.object_id = clmns.default_object_id 
LEFT OUTER JOIN sys.objects AS r ON r.object_id = clmns.rule_object_id 
LEFT OUTER JOIN sys.types AS usrt ON usrt.user_type_id = clmns.user_type_id 
LEFT OUTER JOIN sys.schemas AS s1clmns ON s1clmns.schema_id = usrt.schema_id 
LEFT OUTER JOIN sys.types AS baset ON (baset.user_type_id = clmns.system_type_id and baset.user_type_id = baset.system_type_id) or ((baset.system_type_id = clmns.system_type_id) and (baset.user_type_id = clmns.user_type_id) and (baset.is_user_defined = 0) and (baset.is_assembly_type = 1)) 
LEFT OUTER JOIN sys.xml_schema_collections AS xscclmns ON xscclmns.xml_collection_id = clmns.xml_collection_id 
LEFT OUTER JOIN sys.schemas AS s2clmns ON s2clmns.schema_id = xscclmns.schema_id 
WHERE 
([email protected]_msparam_0)and(([email protected]_msparam_1 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_2))',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000)',@_msparam_0=N'id_banca',@_msparam_1=N'YourType',@_msparam_2=N'dbo' 

exec sp_executesql N'SELECT 
cstr.name AS [Name] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tt.type_table_object_id 
INNER JOIN sys.default_constraints AS cstr ON cstr.object_id=clmns.default_object_id 
WHERE 
([email protected]_msparam_0)and(([email protected]_msparam_1 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_2)) 
ORDER BY 
[Name] ASC',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000)',@_msparam_0=N'id_banca',@_msparam_1=N'YourType',@_msparam_2=N'dbo' 

exec sp_executesql N'SELECT 
i.name AS [Name], 
CAST(i.index_id AS int) AS [ID], 
CAST(OBJECTPROPERTY(i.object_id,N''IsMSShipped'') AS bit) AS [IsSystemObject], 
ISNULL(s.no_recompute,0) AS [NoAutomaticRecomputation], 
i.fill_factor AS [FillFactor], 
CAST(CASE i.index_id WHEN 1 THEN 1 ELSE 0 END AS bit) AS [IsClustered], 
i.is_primary_key + 2*i.is_unique_constraint AS [IndexKeyType], 
i.is_unique AS [IsUnique], 
i.ignore_dup_key AS [IgnoreDuplicateKeys], 
~i.allow_row_locks AS [DisallowRowLocks], 
~i.allow_page_locks AS [DisallowPageLocks], 
CAST(ISNULL(INDEXPROPERTY(i.object_id, i.name, N''IsPadIndex''), 0) AS bit) AS [PadIndex], 
i.is_disabled AS [IsDisabled], 
CAST(ISNULL(k.is_system_named, 0) AS bit) AS [IsSystemNamed], 
CAST(INDEXPROPERTY(i.object_id,i.name,N''IsFulltextKey'') AS bit) AS [IsFullTextKey], 
CAST(case when i.type=3 then 1 else 0 end AS bit) AS [IsXmlIndex], 
case UPPER(ISNULL(xi.secondary_type,'''')) when ''P'' then 1 when ''V'' then 2 when ''R'' then 3 else 0 end AS [SecondaryXmlIndexType], 
ISNULL(xi2.name, N'''') AS [ParentXmlIndex], 
CAST(ISNULL(spi.spatial_index_type,0) AS tinyint) AS [SpatialIndexType], 
CAST(ISNULL(si.bounding_box_xmin,0) AS float(53)) AS [BoundingBoxXMin], 
CAST(ISNULL(si.bounding_box_ymin,0) AS float(53)) AS [BoundingBoxYMin], 
CAST(ISNULL(si.bounding_box_xmax,0) AS float(53)) AS [BoundingBoxXMax], 
CAST(ISNULL(si.bounding_box_ymax,0) AS float(53)) AS [BoundingBoxYMax], 
CAST(ISNULL(si.level_1_grid,0) AS smallint) AS [Level1Grid], 
CAST(ISNULL(si.level_2_grid,0) AS smallint) AS [Level2Grid], 
CAST(ISNULL(si.level_3_grid,0) AS smallint) AS [Level3Grid], 
CAST(ISNULL(si.level_4_grid,0) AS smallint) AS [Level4Grid], 
CAST(ISNULL(si.cells_per_object,0) AS int) AS [CellsPerObject], 
CAST(case when i.type=4 then 1 else 0 end AS bit) AS [IsSpatialIndex], 
i.has_filter AS [HasFilter], 
ISNULL(i.filter_definition, N'''') AS [FilterDefinition], 
CASE WHEN ''FG''=dsi.type THEN dsi.name ELSE N'''' END AS [FileGroup], 
CASE WHEN ''PS''=dsi.type THEN dsi.name ELSE N'''' END AS [PartitionScheme], 
CAST(CASE WHEN ''PS''=dsi.type THEN 1 ELSE 0 END AS bit) AS [IsPartitioned], 
CASE WHEN ''FD''=dstbl.type THEN dstbl.name ELSE N'''' END AS [FileStreamFileGroup], 
CASE WHEN ''PS''=dstbl.type THEN dstbl.name ELSE N'''' END AS [FileStreamPartitionScheme], 
CAST(CASE WHEN filetableobj.object_id IS NULL THEN 0 ELSE 1 END AS bit) AS [IsFileTableDefined], 
CAST(
      CASE i.type WHEN 1 THEN 0 WHEN 4 THEN 4 
         WHEN 3 THEN CASE xi.xml_index_type WHEN 0 THEN 2 WHEN 1 THEN 3 WHEN 2 THEN 7 WHEN 3 THEN 8 END 
         WHEN 4 THEN 4 WHEN 6 THEN 5 ELSE 1 END 
     AS tinyint) AS [IndexType], 

     ISNULL(indexedpaths.name, N'''') 
     AS [IndexedXmlPathName] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.indexes AS i ON (i.index_id > @_msparam_0 and i.is_hypothetical = @_msparam_1) AND (i.object_id=tt.type_table_object_id) 
LEFT OUTER JOIN sys.stats AS s ON s.stats_id = i.index_id AND s.object_id = i.object_id 
LEFT OUTER JOIN sys.key_constraints AS k ON k.parent_object_id = i.object_id AND k.unique_index_id = i.index_id 
LEFT OUTER JOIN sys.xml_indexes AS xi ON xi.object_id = i.object_id AND xi.index_id = i.index_id 
LEFT OUTER JOIN sys.xml_indexes AS xi2 ON xi2.object_id = xi.object_id AND xi2.index_id = xi.using_xml_index_id 
LEFT OUTER JOIN sys.spatial_indexes AS spi ON i.object_id = spi.object_id and i.index_id = spi.index_id 
LEFT OUTER JOIN sys.spatial_index_tessellations as si ON i.object_id = si.object_id and i.index_id = si.index_id 
LEFT OUTER JOIN sys.data_spaces AS dsi ON dsi.data_space_id = i.data_space_id 
LEFT OUTER JOIN sys.tables AS t ON t.object_id = i.object_id 
LEFT OUTER JOIN sys.data_spaces AS dstbl ON dstbl.data_space_id = t.Filestream_data_space_id and (i.index_id < 2 or (i.type = 7 and i.index_id < 3)) 
LEFT OUTER JOIN sys.filetable_system_defined_objects AS filetableobj ON i.object_id = filetableobj.object_id 
LEFT OUTER JOIN sys.selective_xml_index_paths AS indexedpaths ON xi.object_id = indexedpaths.object_id AND xi.using_xml_index_id = indexedpaths.index_id AND xi.path_id = indexedpaths.path_id 
WHERE 
([email protected]_msparam_2)and(([email protected]_msparam_3 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_4))',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000)',@_msparam_0=N'0',@_msparam_1=N'0',@_msparam_2=N'PK__TT_id_ba__70BD165044265C38',@_msparam_3=N'YourType',@_msparam_4=N'dbo' 

exec sp_executesql N'SELECT 
(case ic.key_ordinal when 0 then ic.index_column_id else ic.key_ordinal end) AS [ID], 
clmns.name AS [Name] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.indexes AS i ON (i.index_id > @_msparam_0 and i.is_hypothetical = @_msparam_1) AND (i.object_id=tt.type_table_object_id) 
INNER JOIN sys.index_columns AS ic ON (ic.column_id > 0 and (ic.key_ordinal > 0 or ic.partition_ordinal = 0 or ic.is_included_column != 0)) AND (ic.index_id=CAST(i.index_id AS int) AND ic.object_id=i.object_id) 
INNER JOIN sys.columns AS clmns ON clmns.object_id = ic.object_id and clmns.column_id = ic.column_id 
WHERE 
([email protected]_msparam_2)and(([email protected]_msparam_3 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_4)) 
ORDER BY 
[ID] ASC',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000)',@_msparam_0=N'0',@_msparam_1=N'0',@_msparam_2=N'PK__TT_id_ba__70BD165044265C38',@_msparam_3=N'YourType',@_msparam_4=N'dbo' 

exec sp_executesql N'SELECT 
clmns.name AS [Name], 
(case ic.key_ordinal when 0 then ic.index_column_id else ic.key_ordinal end) AS [ID], 
CAST(COLUMNPROPERTY(ic.object_id, clmns.name, N''IsComputed'') AS bit) AS [IsComputed], 
ic.is_descending_key AS [Descending], 
ic.is_included_column AS [IsIncluded] 
FROM 
sys.table_types AS tt 
INNER JOIN sys.schemas AS stt ON stt.schema_id = tt.schema_id 
INNER JOIN sys.indexes AS i ON (i.index_id > @_msparam_0 and i.is_hypothetical = @_msparam_1) AND (i.object_id=tt.type_table_object_id) 
INNER JOIN sys.index_columns AS ic ON (ic.column_id > 0 and (ic.key_ordinal > 0 or ic.partition_ordinal = 0 or ic.is_included_column != 0)) AND (ic.index_id=CAST(i.index_id AS int) AND ic.object_id=i.object_id) 
INNER JOIN sys.columns AS clmns ON clmns.object_id = ic.object_id and clmns.column_id = ic.column_id 
WHERE 
([email protected]_msparam_2)and(([email protected]_msparam_3)and(([email protected]_msparam_4 and SCHEMA_NAME(tt.schema_id)[email protected]_msparam_5)))',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000),@_msparam_5 nvarchar(4000)',@_msparam_0=N'0',@_msparam_1=N'0',@_msparam_2=N'id_banca',@_msparam_3=N'PK__TT_id_ba__70BD165044265C38',@_msparam_4=N'YourType',@_msparam_5=N'dbo' 

は、これはあなたにそれがあなたがメタデータから情報を得ることができる

関連する問題