สร้างสคริปต์ SQL ที่สร้างฐานข้อมูลและตาราง


102

ฉันมีฐานข้อมูล SQL และตารางที่ฉันต้องการทำซ้ำใน SQL Server อื่น ฉันต้องการสร้างสคริปต์ SQL ที่สร้างฐานข้อมูลและตารางในสคริปต์เดียว

ฉันสามารถสร้างสคริปต์ "สร้าง" โดยใช้ SQL Management Studio สำหรับแต่ละกรณี (ฐานข้อมูลและตาราง) แต่ฉันต้องการทราบว่าการรวมสคริปต์ "สร้าง" ทั้งสองเป็นสคริปต์เดียวจะเพียงพอหรือไม่

ขอบคุณ.


26
คุณช่วยเปลี่ยนคำตอบที่ยอมรับได้ไหม
skolima

1
@skolima เห็นด้วยคำตอบที่ยอมรับ (โดย Clayton) จะได้รับผลลัพธ์ในที่สุด แต่คำตอบของ CJM นั้นเร็วกว่ามาก
elmer007

คำตอบ:


18

ใน SQL Server Management Studio คุณสามารถคลิกขวาบนฐานข้อมูลที่คุณต้องการจำลองและเลือก "ฐานข้อมูลสคริปต์เป็น" เพื่อให้เครื่องมือสร้างไฟล์ SQL ที่เหมาะสมเพื่อจำลองฐานข้อมูลนั้นบนเซิร์ฟเวอร์อื่น คุณสามารถทำขั้นตอนนี้ซ้ำสำหรับแต่ละตารางที่คุณต้องการสร้างจากนั้นรวมไฟล์เป็นไฟล์ SQL ไฟล์เดียว อย่าลืมเพิ่มคำสั่งใช้หลังจากที่คุณสร้างฐานข้อมูลของคุณก่อนที่จะสร้างตารางใด ๆ

ใน SQL Server เวอร์ชันล่าสุดคุณสามารถรับสิ่งนี้ได้ในไฟล์เดียวใน SSMS

  1. คลิกขวาที่ฐานข้อมูล
  2. งาน
  3. สร้างสคริปต์

สิ่งนี้จะเปิดตัวช่วยสร้างที่คุณสามารถสคริปต์ฐานข้อมูลทั้งหมดหรือเพียงบางส่วน ดูเหมือนจะไม่มีวิธี T-SQL ในการดำเนินการนี้

สร้างสคริปต์เซิร์ฟเวอร์ SQL


182
เลื่อนไปเรื่อย ๆ ... วิธีการของ CJM ดีกว่า 99.99999%
ewitkows

คำตอบของ CJM ยังคงไม่เพียงพอ หลังจากใช้วิธีของ CJM แล้วคุณควรใช้วิธี Shawna Jacobs ด้วย
Andrzej Martyna

อย่างไรก็ตามการทำเช่นนี้เป็น SQL มาตรฐานสำหรับ mysql เช่น?
Benjamin Goodacre

378

แม้ว่าคำตอบของ Clayton จะพาคุณไปที่นั่น (ในที่สุด) ใน SQL2005 / 2008 / R2 / 2012 คุณมีตัวเลือกที่ง่ายกว่ามาก:

คลิกขวาที่ฐานข้อมูลเลือกTasksจากนั้นGenerate Scriptsซึ่งจะเปิดตัวช่วยสร้างสคริปต์ สิ่งนี้ช่วยให้คุณสร้างสคริปต์เดียวที่สามารถสร้างฐานข้อมูลแบบเต็มใหม่รวมถึงตาราง / ดัชนีและข้อ จำกัด / กระบวนงานที่จัดเก็บ / ฟังก์ชัน / ผู้ใช้ / ฯลฯ มีตัวเลือกมากมายที่คุณสามารถกำหนดค่าเพื่อปรับแต่งเอาต์พุตได้ แต่ส่วนใหญ่อธิบายได้ด้วยตนเอง

หากคุณพอใจกับตัวเลือกเริ่มต้นคุณสามารถทำงานทั้งหมดได้ในเวลาไม่กี่วินาที

หากคุณต้องการสร้างข้อมูลในฐานข้อมูลใหม่ (เป็นชุดของ INSERTS) ฉันขอแนะนำSSMS Tools Pack (ฟรีสำหรับรุ่น SQL 2008, จ่ายสำหรับเวอร์ชัน SQL 2012)


5
ยอดเยี่ยมมากฉันทำสิ่งนี้และช่วยให้ฉันประหยัดเวลาได้มาก
Bill Sambrone

@CJM ฉันคิดว่าฉันเกือบจะรักคุณ! :-P
Piero Alberto

ฉันทำตามขั้นตอนเหล่านั้นทุกประการ แต่ฉันยังคงได้รับข้อผิดพลาดมากมายและฉันไม่สามารถแก้ไขได้ ความช่วยเหลือใด ๆ
user1789573

ฉันขอแนะนำให้คุณโพสต์คำถามของคุณเองเกี่ยวกับเรื่องนี้ - โปรดโพสต์รายละเอียดเกี่ยวกับขั้นตอนที่คุณดำเนินการและข้อผิดพลาดที่คุณได้รับ
CJM

@ user1789573 - ตามที่ Shawna Jacobs เขียนไว้ - SSMS ไม่สนใจเรื่องการอ้างอิง (อัปยศใน SSMS devteam!) ดังนั้นคุณจะมีข้อผิดพลาดมากมาย "ตามการออกแบบ" ติดตาม Shawna Jacobs ขึ้นเพื่อจัดการกับจุดอ่อนของ SSMS
Andrzej Martyna

9

คำอธิบายที่ยอดเยี่ยมสามารถพบได้ที่นี่: สร้างสคริปต์ใน SQL Server Management Studio

มารยาท Ali Issa นี่คือสิ่งที่คุณต้องทำ:

  1. คลิกขวาที่ฐานข้อมูล (ไม่ใช่ตาราง) แล้วเลือกงาน -> สร้างสคริปต์
  2. ถัดไป -> เลือกตาราง / ตารางที่ร้องขอ (จากเลือกวัตถุฐานข้อมูลเฉพาะ)
  3. ถัดไป -> คลิกขั้นสูง -> ประเภทของข้อมูลไปยัง script = schema และ data

หากคุณต้องการสร้างสคริปต์ที่เพิ่งสร้างตาราง (ไม่มีข้อมูล) คุณสามารถข้ามส่วนขั้นสูงของคำแนะนำได้!


7

ไม่แน่ใจว่าเหตุใด SSMS จึงไม่คำนึงถึงคำสั่งดำเนินการ แต่ก็ไม่เป็นเช่นนั้น นี่ไม่ใช่ปัญหาสำหรับฐานข้อมูลขนาดเล็ก แต่ถ้าฐานข้อมูลของคุณมีวัตถุ 200 ชิ้นล่ะ? ในกรณีนี้คำสั่งของการดำเนินการมีความสำคัญเพราะมันไม่ใช่เรื่องง่ายที่จะทำสิ่งเหล่านี้ทั้งหมด

สำหรับสคริปต์ที่ไม่เรียงลำดับที่สร้างโดย SSMS คุณสามารถติดตามได้

a) ดำเนินการสคริปต์ (วัตถุบางอย่างจะถูกแทรกบางอย่างเคยชินจะมีข้อผิดพลาดบางอย่าง)

b) ลบวัตถุทั้งหมดออกจากสคริปต์ที่เพิ่มลงในฐานข้อมูล

c) กลับไปที่ a) จนกว่าทุกอย่างจะถูกดำเนินการในที่สุด

ทางเลือกอื่นคือใช้เครื่องมือของบุคคลที่สามเช่นApexSQL Scriptหรือเครื่องมืออื่น ๆ ที่กล่าวถึงแล้วในเธรดนี้ (SSMS toolpack, Red Gate และอื่น ๆ )

สิ่งเหล่านี้จะดูแลการอ้างอิงสำหรับคุณและช่วยให้คุณประหยัดเวลามากยิ่งขึ้น


1

ได้คุณสามารถเพิ่มคำสั่ง SQL ลงในสคริปต์เดียวได้มากเท่าที่คุณต้องการ สิ่งเดียวที่ควรทราบ: คำสั่งซื้อมีความสำคัญ คุณไม่สามารถแทรกลงในตารางได้จนกว่าคุณจะสร้างมัน คุณไม่สามารถตั้งค่าคีย์ต่างประเทศได้จนกว่าจะใส่คีย์หลัก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.