Anda dapat membuat skrip tabel yang relatif mudah menggunakan UI tentu saja:
Ini akan menghasilkan CREATE TABLE
skrip dan Anda hanya perlu mencari dan mengganti nama lama dengan nama baru (dan memverifikasi bahwa objek dengan nama baru belum ada).
Tetapi jika Anda mencoba untuk mengotomatiskan ini (misalnya menghasilkan skrip buat tabel dalam kode), ini sedikit lebih rumit. Opsi skrip di atas tidak hanya menarik seluruh CREATE TABLE
DDL dari satu lokasi di metadata; itu melakukan sejumlah sihir di belakang layar dalam kode untuk menghasilkan CREATE TABLE
skrip akhirnya (Anda dapat menggunakan Profiler untuk melihat di mana ia mendapatkan datanya, tetapi Anda tidak dapat melihat bagaimana ia merakitnya). Saya menyarankan opsi untuk ini:
http://connect.microsoft.com/SQLServer/feedback/details/273934
Namun ini disambut dengan sangat sedikit suara dan dengan cepat ditembak jatuh oleh Microsoft. Anda mungkin merasa jauh lebih bermanfaat untuk menggunakan alat pihak ke-3 untuk menghasilkan skema ( saya sudah membuat blog tentang ini ).
Di SQL Server 2012 ada fungsi metadata baru yang memungkinkan Anda untuk mendapatkan lebih dekat daripada pekerjaan yang harus Anda lakukan pada 2005, 2008 dan 2008 R2, menyatukan informasi kolom dari metadata (yang memiliki banyak peringatan, misalnya jika itu desimal Anda harus menambahkan presisi / skala, jika [n [var [char]] Anda harus menambahkan spesifikasi panjang, jika n [var] char Anda harus memotong max_length menjadi setengah, jika itu adalah MAX Anda harus ubah -1 ke MAX, dll.) Di SQL Server 2012 bagian ini sedikit lebih mudah:
SELECT name, system_type_name, is_nullable FROM
sys.dm_exec_describe_first_result_set('select * from sys.objects', NULL, 0)
Hasil:
name system_type_name is_nullable
-------------------- ---------------- -----------
name nvarchar(128) 0
object_id int 0
principal_id int 1
schema_id int 0
parent_object_id int 0
type char(2) 0
type_desc nvarchar(60) 1
create_date datetime 0
modify_date datetime 0
is_ms_shipped bit 0
is_published bit 0
is_schema_published bit 0
Saya sudah membuat blog tentang hal ini juga.
Bisa dibilang ini jauh lebih dekat dengan CREATE TABLE
pernyataan target Anda daripada menggunakan pendekatan berbelit-belitsys.columns
, tetapi masih ada banyak pekerjaan yang harus dilakukan. Tombol, batasan, teks dalam opsi baris, informasi grup grup, pengaturan kompresi, indeks, dll. Ini adalah daftar yang sangat panjang dan saya akan sekali lagi menyarankan Anda melihat alat pihak ke-3 untuk ini alih-alih, dengan risiko mengulangi over. analogi -digunakan, menciptakan kembali roda.
Itu semua mengatakan, jika Anda perlu melakukan ini melalui kode tetapi Anda bisa melakukannya di luar SQL Server, Anda dapat mempertimbangkan SMO / PowerShell. Lihat tip ini dan metode Scripter.Script () .
saya menulis sp ini untuk membuat skema secara otomatis dengan semua hal, pk, fk, partisi, kendala ...
PENTING!! sebelum eksekutif
di sini SP:
untuk mengeksekusinya:
sumber
Ini mungkin menggunakan jackhammer untuk meletakkan paku di dinding, tetapi mengingat luasnya pertanyaan saya pikir itu adalah pilihan yang sah untuk disebutkan.
Jika Anda menggunakan SQL Server 2012 SP4 +, 2014 SP2 + atau 2016 SP1 +, Anda dapat memanfaatkan
DBCC CLONEDATABASE
untuk membuat salinan skema-saja dari data sans database Anda. Ini sangat ideal untuk menghasilkan salinan skema yang komprehensif dari beberapa tabel dan dapat mengurangi kebutuhan untuk "mengotomatiskan" proses pengulangan melalui serangkaian tabel, tetapi berhati-hatilah karena semua salinan tabel akan dibuat di dalam basis data read-only yang baru .Tabel ini akan menyertakan kunci asing, kunci primer, indeks, dan batasan. Mereka juga akan menyertakan statistik dan data penyimpanan kueri (kecuali jika Anda menentukan
NO_STATISTICS
danNO_QUERYSTORE
).Sintaksnya adalah
Ada juga beberapa peringatan lain yang perlu diperhatikan, yang mana Brent Ozar memiliki pos yang bagus , tetapi semuanya benar-benar bermuara pada bagaimana dan mengapa Anda ingin membuat salinan tabel, apakah ada seluk-beluk kesepakatan pemecah transaksi atau tidak. .
sumber
Anda bisa menggunakan perintah "Buat skrip" di SQL Server Management Studio untuk mendapatkan skrip yang bisa membuat tabel Anda, termasuk indeks, pemicu, kunci asing, dll.
Dalam SSMS
Anda kemudian dapat mengedit untuk memasukkan apa yang Anda butuhkan di basis data tujuan Anda.
sumber
Berikut adalah versi yang didasarkan pada satu oleh E.Mantovanelli di utas ini. Ini memperbaiki masalah di mana indeks unik tidak menyertakan kata kunci UNIQUE dalam skrip yang dihasilkan. Itu juga menambahkan parameter sehingga tabel dapat dibuat tanpa indeks non-Clustered atau Anda hanya bisa skrip indeks non-clustered. Saya menggunakan ini untuk membuat tabel panggung, memuatnya menambahkan indeks non-Clustered kemudian melakukan switch tabel, yang memungkinkan beban berjalan lebih cepat dan indeks tidak terfragmentasi.
sumber
Anda bisa menggunakan skrip ini untuk menyalin struktur tabel dengan kunci asing tetapi tanpa indeks. Script ini menangani tipe yang ditentukan pengguna dan kolom yang dikomputasi dengan anggun.
Jika Anda tertarik, Anda dapat menemukannya juga di blog saya: http://www.hansmichiels.com/2016/02/18/how-to-copy-a-database-table-structure-t-sql-scripting-series -s01e01 /
sumber
sumber