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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
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. 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.
