SQL Server’da Veritabanındaki Tüm Tabloların Scriptini Almak

Herkese merhaba, Bu yazıda SQL Server’da veritabanındaki tüm tabloların scriptini almak hakkında bilgi vereceğim. SQL Server’da bazı durumlarda bir tablonun ya da tüm tabloların scriptini alma ihtiyacınız olabilir. Aşağıdaki kod yardımıyla bu işlemi kolaylıkla yapabilirsiniz.

 SELECT 'CREATE TABLE [' + so.name + '] (' + o.list + ')'
       + CASE
             WHEN tc.Constraint_Name IS NULL THEN
                 ''
             ELSE
                 'ALTER TABLE [' + so.Name + '] ADD CONSTRAINT ' + tc.Constraint_Name + ' PRIMARY KEY ' + ' ('
                 + LEFT(j.list, LEN(j.list) - 1) + ')'
         END
FROM sysobjects so
    CROSS APPLY
(
    SELECT '  [' + column_name + '] ' + data_type
           + CASE data_type
                 WHEN 'sql_variant' THEN
                     ''
                 WHEN 'text' THEN
                     ''
                 WHEN 'ntext' THEN
                     ''
                 WHEN 'xml' THEN
                     ''
                 WHEN 'decimal' THEN
                     '(' + CAST(numeric_precision AS VARCHAR) + ', ' + CAST(numeric_scale AS VARCHAR) + ')'
                 ELSE
                     COALESCE(   '(' + CASE
                                           WHEN character_maximum_length = -1 THEN
                                               'MAX'
                                           ELSE
                                               CAST(character_maximum_length AS VARCHAR)
                                       END + ')',
                                 ''
                             )
             END + ' '
           + CASE
                 WHEN EXISTS
                      (
                          SELECT id
                          FROM syscolumns
                          WHERE OBJECT_NAME(id) = so.name
                                AND name = '[' + column_name + ']'
                                AND COLUMNPROPERTY(id, name, 'IsIdentity') = 1
                      ) THEN
                     'IDENTITY(' + CAST(IDENT_SEED(so.name) AS VARCHAR) + ',' + CAST(IDENT_INCR(so.name) AS VARCHAR)
                     + ')'
                 ELSE
                     ''
             END + ' ' + (CASE
                              WHEN IS_NULLABLE = 'No' THEN
                                  'NOT '
                              ELSE
                                  ''
                          END
                         ) + 'NULL ' + CASE
                                           WHEN information_schema.columns.COLUMN_DEFAULT IS NOT NULL THEN
                                               'DEFAULT ' + information_schema.columns.COLUMN_DEFAULT
                                           ELSE
                                               ''
                                       END + ', '
    FROM information_schema.columns
    WHERE table_name = so.name
    ORDER BY ordinal_position
    FOR XML PATH('')
) o(list)
    LEFT JOIN information_schema.table_constraints tc
        ON tc.Table_name = so.Name
           AND tc.Constraint_Type = 'PRIMARY KEY'
    CROSS APPLY
(
    SELECT '[' + Column_Name + '], '
    FROM information_schema.key_column_usage kcu
    WHERE kcu.Constraint_Name = tc.Constraint_Name
    ORDER BY ORDINAL_POSITION
    FOR XML PATH('')
) j(list)
WHERE xtype = 'U'
      AND name NOT IN ( 'dtproperties' );

Kodu seçmiş olduğunuz veritabanı üzerinde çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz. SQL Server’da Veritabanındaki Tüm Tabloların Scriptini Almak Görüldüğü üzere tüm tabloların scriptini oluşturmuş oldu. Dilediğinizi seçip kullanabilirsiniz.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

354 Kez Okundu