<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TSQL Table Script - MSSQL Query</title>
	<atom:link href="https://mssqlquery.com/tag/tsql-table-script/feed" rel="self" type="application/rss+xml" />
	<link>https://mssqlquery.com</link>
	<description>MSSQL and TSQL Programming and TSQL Examples</description>
	<lastBuildDate>Fri, 12 Nov 2021 14:32:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3.2</generator>

<image>
	<url>https://mssqlquery.com/wp-content/uploads/2023/06/cropped-mssql-query-icon-32x32.png</url>
	<title>TSQL Table Script - MSSQL Query</title>
	<link>https://mssqlquery.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Creating Table Script in SQL Server</title>
		<link>https://mssqlquery.com/creating-table-script-in-sql-server</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Fri, 12 Nov 2021 14:32:02 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Creating Table Script in SQL Server]]></category>
		<category><![CDATA[SQL Server Table Script]]></category>
		<category><![CDATA[TSQL Table Script]]></category>
		<guid isPermaLink="false">https://mssqlquery.com/?p=335</guid>

					<description><![CDATA[<p>Hello to everyone, In this article, I will try to give information about creating the table script in SQL Server. In SQL Server, in some cases, you may want to create a script of a selected table with code. You can easily do this using the code below. DECLARE @TableName&#46;&#46;&#46;</p>
<p>The post <a href="https://mssqlquery.com/creating-table-script-in-sql-server">Creating Table Script in SQL Server</a> first appeared on <a href="https://mssqlquery.com">MSSQL Query</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Hello to everyone,</p>
<p>In this article, I will try to give information about creating the table script in SQL Server.</p>
<p>In SQL Server, in some cases, you may want to create a script of a selected table with code.</p>
<p>You can easily do this using the code below.</p>
<pre class="line-numbers"><code class="language-sql">DECLARE @TableName sysname;
SELECT @TableName = 'dbo.Products';

DECLARE @object_name sysname,
        @object_id INT;

SELECT @object_name = '[' + s.name + '].[' + o.name + ']',
       @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 + '.' + o.name = @TableName
      AND o.[type] = 'U'
      AND o.is_ms_shipped = 0;

DECLARE @SQL NVARCHAR(MAX) = N'';
WITH index_column
AS (SELECT ic.[object_id],
           ic.index_id,
           ic.is_descending_key,
           ic.is_included_column,
           c.name
    FROM sys.index_columns ic WITH (NOWAIT)
        JOIN sys.columns c WITH (NOWAIT)
            ON ic.[object_id] = c.[object_id]
               AND ic.column_id = c.column_id
    WHERE ic.[object_id] = @object_id),
     fk_columns
AS (SELECT k.constraint_object_id,
           cname = c.name,
           rcname = rc.name
    FROM sys.foreign_key_columns k WITH (NOWAIT)
        JOIN sys.columns rc WITH (NOWAIT)
            ON rc.[object_id] = k.referenced_object_id
               AND rc.column_id = k.referenced_column_id
        JOIN sys.columns c WITH (NOWAIT)
            ON c.[object_id] = k.parent_object_id
               AND c.column_id = k.parent_column_id
    WHERE k.parent_object_id = @object_id)
SELECT @SQL
    = N'CREATE TABLE ' + @object_name + CHAR(13) + N'(' + CHAR(13)
      + STUFF(
    (
        SELECT CHAR(9) + ', [' + c.name + '] '
               + CASE
                     WHEN c.is_computed = 1 THEN
                         'AS ' + cc.[definition]
                     ELSE
                         UPPER(tp.name)
                         + CASE
                               WHEN tp.name IN ( 'varchar', 'char', 'varbinary', 'binary', 'text' ) THEN
                                   '(' + CASE
                                             WHEN c.max_length = -1 THEN
                                                 'MAX'
                                             ELSE
                                                 CAST(c.max_length AS VARCHAR(5))
                                         END + ')'
                               WHEN tp.name IN ( 'nvarchar', 'nchar', 'ntext' ) THEN
                                   '(' + CASE
                                             WHEN c.max_length = -1 THEN
                                                 'MAX'
                                             ELSE
                                                 CAST(c.max_length / 2 AS VARCHAR(5))
                                         END + ')'
                               WHEN tp.name IN ( 'datetime2', 'time2', 'datetimeoffset' ) THEN
                                   '(' + CAST(c.scale AS VARCHAR(5)) + ')'
                               WHEN tp.name = 'decimal' THEN
                                   '(' + CAST(c.[precision] AS VARCHAR(5)) + ',' + CAST(c.scale AS VARCHAR(5)) + ')'
                               ELSE
                                   ''
                           END + CASE
                                     WHEN c.collation_name IS NOT NULL THEN
                                         ' COLLATE ' + c.collation_name
                                     ELSE
                                         ''
                                 END + CASE
                                           WHEN c.is_nullable = 1 THEN
                                               ' NULL'
                                           ELSE
                                               ' NOT NULL'
                                       END + CASE
                                                 WHEN dc.[definition] IS NOT NULL THEN
                                                     ' DEFAULT' + dc.[definition]
                                                 ELSE
                                                     ''
                                             END
                         + CASE
                               WHEN ic.is_identity = 1 THEN
                                   ' IDENTITY(' + CAST(ISNULL(ic.seed_value, '0') AS CHAR(1)) + ','
                                   + CAST(ISNULL(ic.increment_value, '1') AS CHAR(1)) + ')'
                               ELSE
                                   ''
                           END
                 END + CHAR(13)
        FROM sys.columns c WITH (NOWAIT)
            JOIN sys.types tp WITH (NOWAIT)
                ON c.user_type_id = tp.user_type_id
            LEFT JOIN sys.computed_columns cc WITH (NOWAIT)
                ON c.[object_id] = cc.[object_id]
                   AND c.column_id = cc.column_id
            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
            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
        WHERE c.[object_id] = @object_id
        ORDER BY c.column_id
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'),
    1,
    2,
    CHAR(9) + ' '
             ) + ISNULL(
                 (
                     SELECT CHAR(9) + ', CONSTRAINT [' + k.name + '] PRIMARY KEY (' +
    (
        SELECT STUFF(
    (
        SELECT ', [' + c.name + '] ' + CASE
                                           WHEN ic.is_descending_key = 1 THEN
                                               'DESC'
                                           ELSE
                                               'ASC'
                                       END
        FROM sys.index_columns ic WITH (NOWAIT)
            JOIN sys.columns c WITH (NOWAIT)
                ON c.[object_id] = ic.[object_id]
                   AND c.column_id = ic.column_id
        WHERE ic.is_included_column = 0
              AND ic.[object_id] = k.parent_object_id
              AND ic.index_id = k.unique_index_id
        FOR XML PATH(N''), TYPE
    ).value('.', 'NVARCHAR(MAX)'),
    1       ,
    2       ,
    ''
                    )
    )                       + ')' + CHAR(13)
                     FROM sys.key_constraints k WITH (NOWAIT)
                     WHERE k.parent_object_id = @object_id
                           AND k.[type] = 'PK'
                 ),
                 ''
                       ) + N')' + CHAR(13)
      + ISNULL(
        (
            SELECT
    (
        SELECT CHAR(13) + 'ALTER TABLE ' + @object_name + ' WITH' + CASE
                                                                        WHEN fk.is_not_trusted = 1 THEN
                                                                            ' NOCHECK'
                                                                        ELSE
                                                                            ' CHECK'
                                                                    END + ' ADD CONSTRAINT [' + fk.name
               + '] FOREIGN KEY(' + STUFF(
    (
        SELECT ', [' + k.cname + ']'
        FROM fk_columns k
        WHERE k.constraint_object_id = fk.[object_id]
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'),
    1       ,
    2       ,
    ''
                                         ) + ')' + ' REFERENCES [' + SCHEMA_NAME(ro.[schema_id]) + '].[' + ro.name
               + '] (' + STUFF(
    (
        SELECT ', [' + k.rcname + ']'
        FROM fk_columns k
        WHERE k.constraint_object_id = fk.[object_id]
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'),
    1       ,
    2       ,
    ''
                              ) + ')' + CASE
                                            WHEN fk.delete_referential_action = 1 THEN
                                                ' ON DELETE CASCADE'
                                            WHEN fk.delete_referential_action = 2 THEN
                                                ' ON DELETE SET NULL'
                                            WHEN fk.delete_referential_action = 3 THEN
                                                ' ON DELETE SET DEFAULT'
                                            ELSE
                                                ''
                                        END + CASE
                                                  WHEN fk.update_referential_action = 1 THEN
                                                      ' ON UPDATE CASCADE'
                                                  WHEN fk.update_referential_action = 2 THEN
                                                      ' ON UPDATE SET NULL'
                                                  WHEN fk.update_referential_action = 3 THEN
                                                      ' ON UPDATE SET DEFAULT'
                                                  ELSE
                                                      ''
                                              END + CHAR(13) + 'ALTER TABLE ' + @object_name + ' CHECK CONSTRAINT ['
               + fk.name + ']' + CHAR(13)
        FROM sys.foreign_keys fk WITH (NOWAIT)
            JOIN sys.objects ro WITH (NOWAIT)
                ON ro.[object_id] = fk.referenced_object_id
        WHERE fk.parent_object_id = @object_id
        FOR XML PATH(N''), TYPE
    ).value('.', 'NVARCHAR(MAX)')
        ),
        ''
              )
      + ISNULL(
                  (
    (
        SELECT CHAR(13) + 'CREATE' + CASE
                                         WHEN i.is_unique = 1 THEN
                                             ' UNIQUE'
                                         ELSE
                                             ''
                                     END + ' NONCLUSTERED INDEX [' + i.name + '] ON ' + @object_name + ' (' + STUFF(
    (
        SELECT ', [' + c.name + ']' + CASE
                                          WHEN c.is_descending_key = 1 THEN
                                              ' DESC'
                                          ELSE
                                              ' ASC'
                                      END
        FROM index_column c
        WHERE c.is_included_column = 0
              AND c.index_id = i.index_id
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'),
    1       ,
    2       ,
    ''
                                                                                                                   )
               + ')' + ISNULL(CHAR(13) + 'INCLUDE (' + STUFF(
    (
        SELECT ', [' + c.name + ']'
        FROM index_column c
        WHERE c.is_included_column = 1
              AND c.index_id = i.index_id
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)')                              ,
    1                        ,
    2                        ,
    ''
                                                            ) + ')',
                              ''
                             ) + CHAR(13)
        FROM sys.indexes i WITH (NOWAIT)
        WHERE i.[object_id] = @object_id
              AND i.is_primary_key = 0
              AND i.[type] = 2
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)')
                  ),
                  ''
              );

PRINT @SQL;
--EXEC sys.sp_executesql @SQL</code></pre>
<p>I tried the above code for the Products table in the Northwind database. You can also try it for your own tables.</p>
<p>When you run the code, you will see the following result.</p>
<p><img decoding="async" fetchpriority="high" class="alignnone wp-image-337 size-full" src="https://mssqlquery.com/wp-content/uploads/2021/11/creating-table-script-in-sql-server-1.jpg" alt="Creating Table Script in SQL Server" width="700" height="483" srcset="https://mssqlquery.com/wp-content/uploads/2021/11/creating-table-script-in-sql-server-1.jpg 700w, https://mssqlquery.com/wp-content/uploads/2021/11/creating-table-script-in-sql-server-1-300x207.jpg 300w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>As you can see, the selected table script has been created.</p>
<p>Good luck to everyone in business and life.</p>
<div class='epvc-post-count'><span class='epvc-eye'></span>  <span class="epvc-count"> 422</span><span class='epvc-label'> Views</span></div><p>The post <a href="https://mssqlquery.com/creating-table-script-in-sql-server">Creating Table Script in SQL Server</a> first appeared on <a href="https://mssqlquery.com">MSSQL Query</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
