Buat skrip SQL yang membuat database dan tabel

102

Saya memiliki database dan tabel SQL yang ingin saya gandakan di SQL Server lain. Saya ingin membuat skrip SQL yang membuat database dan tabel dalam satu skrip.

Saya dapat membuat skrip "Buat" menggunakan SQL Management Studio untuk setiap kasus (Database dan Tabel), tetapi saya ingin tahu apakah menggabungkan kedua skrip "Buat" ke dalam skrip tunggal sudah cukup.

Terima kasih.

tony
sumber
26
bisakah Anda mengubah jawaban yang diterima?
skolima
1
@skolima setuju, jawaban yang diterima (oleh Clayton) pada akhirnya akan mendapatkan hasil, tetapi jawaban CJM jauh lebih cepat
elmer007

Jawaban:

18

Di SQL Server Management Studio, Anda dapat mengklik kanan pada database yang ingin Anda gandakan, dan pilih "Script Database sebagai" agar alat membuat file SQL yang sesuai untuk mereplikasi database tersebut di server lain. Anda dapat mengulangi proses ini untuk setiap tabel yang ingin Anda buat, lalu menggabungkan file ke dalam satu file SQL. Jangan lupa untuk menambahkan pernyataan using setelah Anda membuat Database Anda, tetapi sebelum pembuatan tabel apa pun.

Di versi SQL Server yang lebih baru, Anda bisa mendapatkan ini dalam satu file di SSMS.

  1. Klik kanan database.
  2. Tugas
  3. Hasilkan Skrip

Ini akan meluncurkan wizard di mana Anda dapat membuat skrip seluruh database atau hanya sebagian. Tampaknya tidak ada cara T-SQL untuk melakukan ini.

Buat Skrip SQL Server

Clayton
sumber
182
Terus gulir ... Metode CJM
99,99999
Jawaban CJM masih belum cukup. Setelah penerapan metode CJM, Anda juga harus menerapkan metode Shawna Jacobs.
Andrzej Martyna
Pokoknya untuk melakukan ini adalah SQL standar untuk mysql misalnya?
Benjamin Goodacre
378

Meskipun jawaban Clayton akan membawa Anda ke sana (pada akhirnya), di SQL2005 / 2008 / R2 / 2012 Anda memiliki opsi yang jauh lebih mudah:

Klik kanan pada Database, pilih Tasksdan kemudian Generate Scripts, yang akan meluncurkan Script Wizard. Ini memungkinkan Anda untuk menghasilkan satu skrip yang dapat membuat ulang database lengkap termasuk tabel / indeks & batasan / prosedur tersimpan / fungsi / pengguna / dll. Ada banyak opsi yang dapat Anda konfigurasikan untuk menyesuaikan keluaran, tetapi sebagian besar sudah cukup jelas.

Jika Anda senang dengan opsi default, Anda dapat melakukan seluruh pekerjaan dalam hitungan detik.

Jika Anda ingin membuat ulang data dalam database (sebagai rangkaian INSERTS), saya juga akan merekomendasikan Paket Alat SSMS (Gratis untuk versi SQL 2008, Dibayar untuk versi SQL 2012).

CJM
sumber
5
Ini luar biasa, saya baru saja melakukan ini dan menghemat banyak waktu.
Bill Sambrone
@CJM Saya berpikir saya HAMPIR mencintaimu! :-P
Piero Alberto
Saya mengikuti langkah-langkah itu dengan tepat tetapi saya masih mendapatkan banyak sekali kesalahan dan saya tidak dapat memperbaikinya. Ada bantuan?
pengguna1789573
Saya sarankan Anda memposting pertanyaan Anda sendiri tentang ini - pastikan Anda memposting detail tentang langkah yang Anda ambil dan kesalahan yang Anda terima.
CJM
@ user1789573 - seperti yang ditulis Shawna Jacobs - SSMS tidak peduli tentang dependensi (memalukan pada devteam SSMS!) jadi Anda akan mengalami banyak kesalahan "berdasarkan desain". Ikuti Shawna Jacobs asnwer untuk mengatasi kelemahan SSMS ini.
Andrzej Martyna
9

Penjelasan yang sangat baik dapat ditemukan di sini: Membuat skrip di SQL Server Management Studio

Courtesy Ali Issa Inilah yang harus Anda lakukan:

  1. Klik kanan database (bukan tabel) dan pilih tugas -> buat skrip
  2. Selanjutnya -> pilih tabel / tabel yang diminta (dari objek database tertentu pilih)
  3. Selanjutnya -> klik lanjutan -> jenis data ke script = skema dan data

Jika Anda ingin membuat skrip yang hanya menghasilkan tabel (tidak ada data), Anda dapat melewati bagian lanjutan dari instruksi!

HelloImKevo
sumber
7

Tidak yakin mengapa SSMS tidak memperhitungkan urutan eksekusi akun tetapi tidak begitu saja. Ini bukan masalah untuk database kecil tetapi bagaimana jika database Anda memiliki 200 objek? Dalam kasus seperti itu, urutan eksekusi penting karena tidak mudah untuk melalui semua ini.

Untuk skrip tidak berurutan yang dibuat oleh SSMS, Anda dapat mengikuti

a) Jalankan skrip (beberapa objek akan disisipkan beberapa wont, akan ada beberapa kesalahan)

b) Hapus semua objek dari script yang telah ditambahkan ke database

c) Kembali ke a) sampai semuanya pada akhirnya dieksekusi

Opsi alternatif adalah dengan menggunakan alat pihak ketiga seperti ApexSQL Script atau alat lain yang telah disebutkan di utas ini (Paket alat SSMS, Gerbang Merah, dan lainnya).

Semua ini akan menangani dependensi untuk Anda dan menghemat lebih banyak waktu.

Shawna Jacobs
sumber
1

Ya, Anda dapat menambahkan sebanyak mungkin pernyataan SQL ke dalam satu skrip sesuai keinginan. Hanya satu hal yang perlu diperhatikan: urutan itu penting. Anda tidak dapat MEMASUKKAN ke dalam tabel sampai Anda MENCIPTAKANnya; Anda tidak dapat mengatur kunci asing hingga kunci utama dimasukkan.

duffymo
sumber