{"id":619,"date":"2017-01-11T12:58:21","date_gmt":"2017-01-11T07:28:21","guid":{"rendered":"http:\/\/mairwa.com\/wordpress\/?p=619"},"modified":"2017-01-11T12:58:36","modified_gmt":"2017-01-11T07:28:36","slug":"get-table-detail","status":"publish","type":"post","link":"http:\/\/mairwa.com\/wordpress\/?p=619","title":{"rendered":"Get Table Detail"},"content":{"rendered":"<blockquote><p>DECLARE @table_name SYSNAME<\/p>\n<p>SELECT @table_name = &#8216;dbo.TableName&#8217;<\/p>\n<p>&nbsp;<\/p>\n<p>DECLARE<\/p>\n<p>@object_name SYSNAME<\/p>\n<p>, @object_id INT<\/p>\n<p>&nbsp;<\/p>\n<p>SELECT<\/p>\n<p>@object_name = &#8216;[&#8216; + s.name + &#8216;].[&#8216; + o.name + &#8216;]&#8217;<\/p>\n<p>, @object_id = o.[object_id]<\/p>\n<p>FROM sys.objects o WITH (NOWAIT)<\/p>\n<p>JOIN sys.schemas s WITH (NOWAIT) ON o.[schema_id] = s.[schema_id]<\/p>\n<p>WHERE s.name + &#8216;.&#8217; + o.name = @table_name<\/p>\n<p>AND o.[type] = &#8216;U&#8217;<\/p>\n<p>AND o.is_ms_shipped = 0<\/p>\n<p>&nbsp;<\/p>\n<p>DECLARE @SQL NVARCHAR(MAX) = &#8221;<\/p>\n<p>&nbsp;<\/p>\n<p>;WITH index_column AS<\/p>\n<p>(<\/p>\n<p>SELECT<\/p>\n<p>ic.[object_id]<\/p>\n<p>, ic.index_id<\/p>\n<p>, ic.is_descending_key<\/p>\n<p>, ic.is_included_column<\/p>\n<p>, c.name<\/p>\n<p>FROM sys.index_columns ic WITH (NOWAIT)<\/p>\n<p>JOIN sys.columns c WITH (NOWAIT) ON ic.[object_id] = c.[object_id] AND ic.column_id = c.column_id<\/p>\n<p>WHERE ic.[object_id] = @object_id<\/p>\n<p>),<\/p>\n<p>fk_columns AS<\/p>\n<p>(<\/p>\n<p>SELECT<\/p>\n<p>k.constraint_object_id<\/p>\n<p>, cname = c.name<\/p>\n<p>, rcname = rc.name<\/p>\n<p>FROM sys.foreign_key_columns k WITH (NOWAIT)<\/p>\n<p>JOIN sys.columns rc WITH (NOWAIT) ON rc.[object_id] = k.referenced_object_id AND rc.column_id = k.referenced_column_id<\/p>\n<p>JOIN sys.columns c WITH (NOWAIT) ON c.[object_id] = k.parent_object_id AND c.column_id = k.parent_column_id<\/p>\n<p>WHERE k.parent_object_id = @object_id<\/p>\n<p>)<\/p>\n<p>SELECT @SQL = &#8216;CREATE TABLE &#8216; + @object_name + CHAR(13) + &#8216;(&#8216; + CHAR(13) + STUFF((<\/p>\n<p>SELECT CHAR(9) + &#8216;, [&#8216; + c.name + &#8216;] &#8216; +<\/p>\n<p>CASE WHEN c.is_computed = 1<\/p>\n<p>THEN &#8216;AS &#8216; + cc.[definition]<\/p>\n<p>ELSE UPPER(tp.name) +<\/p>\n<p>CASE WHEN tp.name IN (&#8216;varchar&#8217;, &#8216;char&#8217;, &#8216;varbinary&#8217;, &#8216;binary&#8217;, &#8216;text&#8217;)<\/p>\n<p>THEN &#8216;(&#8216; + CASE WHEN c.max_length = -1 THEN &#8216;MAX&#8217; ELSE CAST(c.max_length AS VARCHAR(5)) END + &#8216;)&#8217;<\/p>\n<p>WHEN tp.name IN (&#8216;nvarchar&#8217;, &#8216;nchar&#8217;, &#8216;ntext&#8217;)<\/p>\n<p>THEN &#8216;(&#8216; + CASE WHEN c.max_length = -1 THEN &#8216;MAX&#8217; ELSE CAST(c.max_length \/ 2 AS VARCHAR(5)) END + &#8216;)&#8217;<\/p>\n<p>WHEN tp.name IN (&#8216;datetime2&#8217;, &#8216;time2&#8217;, &#8216;datetimeoffset&#8217;)<\/p>\n<p>THEN &#8216;(&#8216; + CAST(c.scale AS VARCHAR(5)) + &#8216;)&#8217;<\/p>\n<p>WHEN tp.name = &#8216;decimal&#8217;<\/p>\n<p>THEN &#8216;(&#8216; + CAST(c.[precision] AS VARCHAR(5)) + &#8216;,&#8217; + CAST(c.scale AS VARCHAR(5)) + &#8216;)&#8217;<\/p>\n<p>ELSE &#8221;<\/p>\n<p>END +<\/p>\n<p>CASE WHEN c.collation_name IS NOT NULL THEN &#8216; COLLATE &#8216; + c.collation_name ELSE &#8221; END +<\/p>\n<p>CASE WHEN c.is_nullable = 1 THEN &#8216; NULL&#8217; ELSE &#8216; NOT NULL&#8217; END +<\/p>\n<p>CASE WHEN dc.[definition] IS NOT NULL THEN &#8216; DEFAULT&#8217; + dc.[definition] ELSE &#8221; END +<\/p>\n<p>CASE WHEN ic.is_identity = 1 THEN &#8216; IDENTITY(&#8216; + CAST(ISNULL(ic.seed_value, &#8216;0&#8217;) AS CHAR(1)) + &#8216;,&#8217; + CAST(ISNULL(ic.increment_value, &#8216;1&#8217;) AS CHAR(1)) + &#8216;)&#8217; ELSE &#8221; END<\/p>\n<p>END + CHAR(13)<\/p>\n<p>FROM sys.columns c WITH (NOWAIT)<\/p>\n<p>JOIN sys.types tp WITH (NOWAIT) ON c.user_type_id = tp.user_type_id<\/p>\n<p>LEFT JOIN sys.computed_columns cc WITH (NOWAIT) ON c.[object_id] = cc.[object_id] AND c.column_id = cc.column_id<\/p>\n<p>LEFT JOIN sys.default_constraints dc WITH (NOWAIT) ON c.default_object_id != 0 AND c.[object_id] = dc.parent_object_id AND c.column_id = dc.parent_column_id<\/p>\n<p>LEFT JOIN sys.identity_columns ic WITH (NOWAIT) ON c.is_identity = 1 AND c.[object_id] = ic.[object_id] AND c.column_id = ic.column_id<\/p>\n<p>WHERE c.[object_id] = @object_id<\/p>\n<p>ORDER BY c.column_id<\/p>\n<p>FOR XML PATH(&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;), 1, 2, CHAR(9) + &#8216; &#8216;)<\/p>\n<p>+ ISNULL((SELECT CHAR(9) + &#8216;, CONSTRAINT [&#8216; + k.name + &#8216;] PRIMARY KEY (&#8216; +<\/p>\n<p>(SELECT STUFF((<\/p>\n<p>SELECT &#8216;, [&#8216; + c.name + &#8216;] &#8216; + CASE WHEN ic.is_descending_key = 1 THEN &#8216;DESC&#8217; ELSE &#8216;ASC&#8217; END<\/p>\n<p>FROM sys.index_columns ic WITH (NOWAIT)<\/p>\n<p>JOIN sys.columns c WITH (NOWAIT) ON c.[object_id] = ic.[object_id] AND c.column_id = ic.column_id<\/p>\n<p>WHERE ic.is_included_column = 0<\/p>\n<p>AND ic.[object_id] = k.parent_object_id<\/p>\n<p>AND ic.index_id = k.unique_index_id<\/p>\n<p>FOR XML PATH(N&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;), 1, 2, &#8221;))<\/p>\n<p>+ &#8216;)&#8217; + CHAR(13)<\/p>\n<p>FROM sys.key_constraints k WITH (NOWAIT)<\/p>\n<p>WHERE k.parent_object_id = @object_id<\/p>\n<p>AND k.[type] = &#8216;PK&#8217;), &#8221;) + &#8216;)&#8217;\u00a0 + CHAR(13)<\/p>\n<p>+ ISNULL((SELECT (<\/p>\n<p>SELECT CHAR(13) +<\/p>\n<p>&#8216;ALTER TABLE &#8216; + @object_name + &#8216; WITH&#8217;<\/p>\n<p>+ CASE WHEN fk.is_not_trusted = 1<\/p>\n<p>THEN &#8216; NOCHECK&#8217;<\/p>\n<p>ELSE &#8216; CHECK&#8217;<\/p>\n<p>END +<\/p>\n<p>&#8216; ADD CONSTRAINT [&#8216; + fk.name\u00a0 + &#8216;] FOREIGN KEY(&#8216;<\/p>\n<p>+ STUFF((<\/p>\n<p>SELECT &#8216;, [&#8216; + k.cname + &#8216;]&#8217;<\/p>\n<p>FROM fk_columns k<\/p>\n<p>WHERE k.constraint_object_id = fk.[object_id]<\/p>\n<p>FOR XML PATH(&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;), 1, 2, &#8221;)<\/p>\n<p>+ &#8216;)&#8217; +<\/p>\n<p>&#8216; REFERENCES [&#8216; + SCHEMA_NAME(ro.[schema_id]) + &#8216;].[&#8216; + ro.name + &#8216;] (&#8216;<\/p>\n<p>+ STUFF((<\/p>\n<p>SELECT &#8216;, [&#8216; + k.rcname + &#8216;]&#8217;<\/p>\n<p>FROM fk_columns k<\/p>\n<p>WHERE k.constraint_object_id = fk.[object_id]<\/p>\n<p>FOR XML PATH(&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;), 1, 2, &#8221;)<\/p>\n<p>+ &#8216;)&#8217;<\/p>\n<p>+ CASE<\/p>\n<p>WHEN fk.delete_referential_action = 1 THEN &#8216; ON DELETE CASCADE&#8217;<\/p>\n<p>WHEN fk.delete_referential_action = 2 THEN &#8216; ON DELETE SET NULL&#8217;<\/p>\n<p>WHEN fk.delete_referential_action = 3 THEN &#8216; ON DELETE SET DEFAULT&#8217;<\/p>\n<p>ELSE &#8221;<\/p>\n<p>END<\/p>\n<p>+ CASE<\/p>\n<p>WHEN fk.update_referential_action = 1 THEN &#8216; ON UPDATE CASCADE&#8217;<\/p>\n<p>WHEN fk.update_referential_action = 2 THEN &#8216; ON UPDATE SET NULL&#8217;<\/p>\n<p>WHEN fk.update_referential_action = 3 THEN &#8216; ON UPDATE SET DEFAULT&#8217;<\/p>\n<p>ELSE &#8221;<\/p>\n<p>END<\/p>\n<p>+ CHAR(13) + &#8216;ALTER TABLE &#8216; + @object_name + &#8216; CHECK CONSTRAINT [&#8216; + fk.name\u00a0 + &#8216;]&#8217; + CHAR(13)<\/p>\n<p>FROM sys.foreign_keys fk WITH (NOWAIT)<\/p>\n<p>JOIN sys.objects ro WITH (NOWAIT) ON ro.[object_id] = fk.referenced_object_id<\/p>\n<p>WHERE fk.parent_object_id = @object_id<\/p>\n<p>FOR XML PATH(N&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;)), &#8221;)<\/p>\n<p>+ ISNULL(((SELECT<\/p>\n<p>CHAR(13) + &#8216;CREATE&#8217; + CASE WHEN i.is_unique = 1 THEN &#8216; UNIQUE&#8217; ELSE &#8221; END<\/p>\n<p>+ &#8216; NONCLUSTERED INDEX [&#8216; + i.name + &#8216;] ON &#8216; + @object_name + &#8216; (&#8216; +<\/p>\n<p>STUFF((<\/p>\n<p>SELECT &#8216;, [&#8216; + c.name + &#8216;]&#8217; + CASE WHEN c.is_descending_key = 1 THEN &#8216; DESC&#8217; ELSE &#8216; ASC&#8217; END<\/p>\n<p>FROM index_column c<\/p>\n<p>WHERE c.is_included_column = 0<\/p>\n<p>AND c.index_id = i.index_id<\/p>\n<p>FOR XML PATH(&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;), 1, 2, &#8221;) + &#8216;)&#8217;<\/p>\n<p>+ ISNULL(CHAR(13) + &#8216;INCLUDE (&#8216; +<\/p>\n<p>STUFF((<\/p>\n<p>SELECT &#8216;, [&#8216; + c.name + &#8216;]&#8217;<\/p>\n<p>FROM index_column c<\/p>\n<p>WHERE c.is_included_column = 1<\/p>\n<p>AND c.index_id = i.index_id<\/p>\n<p>FOR XML PATH(&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;), 1, 2, &#8221;) + &#8216;)&#8217;, &#8221;)\u00a0 + CHAR(13)<\/p>\n<p>FROM sys.indexes i WITH (NOWAIT)<\/p>\n<p>WHERE i.[object_id] = @object_id<\/p>\n<p>AND i.is_primary_key = 0<\/p>\n<p>AND i.[type] = 2<\/p>\n<p>FOR XML PATH(&#8221;), TYPE).value(&#8216;.&#8217;, &#8216;NVARCHAR(MAX)&#8217;)<\/p>\n<p>), &#8221;)<\/p>\n<p>&nbsp;<\/p>\n<p>PRINT @SQL<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">DECLARE @table_name SYSNAME SELECT @table_name = &#8216;dbo.TableName&#8217; &nbsp; DECLARE @object_name SYSNAME , @object_id INT &nbsp; SELECT @object_name = &#8216;[&#8216; + s.name + &#8216;].[&#8216; + o.name + &#8216;]&#8217; , @object_id = o.[object_id] FROM sys.objects o WITH (NOWAIT) JOIN sys.schemas s WITH (NOWAIT) ON o.[schema_id] = s.[schema_id] WHERE s.name + &#8216;.&#8217; + o.name = @table_name AND o.[type] = &#8216;U&#8217; AND o.is_ms_shipped =&hellip; <a href=\"http:\/\/mairwa.com\/wordpress\/?p=619\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-619","post","type-post","status-publish","format-standard","hentry","category-sql","xfolkentry"],"_links":{"self":[{"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=619"}],"version-history":[{"count":1,"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/619\/revisions"}],"predecessor-version":[{"id":620,"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/619\/revisions\/620"}],"wp:attachment":[{"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=619"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mairwa.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}