มีวิธีใดบ้างที่ฉันสามารถรับสคริปต์ของตาราง procs และวัตถุอื่น ๆ จากฐานข้อมูลได้ ฉันรู้ว่ามีตัวเลือกในการเขียนสคริปต์ฐานข้อมูล แต่ให้สคริปต์ระดับบนสุดบางประเภทเท่านั้นไม่ใช่สคริปต์สำหรับสร้างตาราง procs, udfs, .etc ทั้งหมด
มีวิธีใดบ้างที่ฉันสามารถรับสคริปต์ของตาราง procs และวัตถุอื่น ๆ จากฐานข้อมูลได้ ฉันรู้ว่ามีตัวเลือกในการเขียนสคริปต์ฐานข้อมูล แต่ให้สคริปต์ระดับบนสุดบางประเภทเท่านั้นไม่ใช่สคริปต์สำหรับสร้างตาราง procs, udfs, .etc ทั้งหมด
คำตอบ:
จาก Management Studio คลิกขวาที่ฐานข้อมูลของคุณ งาน -> สร้างสคริปต์
ที่ควรทำ
ฉันเขียนยูทิลิตี้บรรทัดคำสั่งโอเพ่นซอร์สชื่อSchemaZenที่ทำสิ่งนี้ เร็วกว่าการเขียนสคริปต์จากสตูดิโอการจัดการมากและเอาต์พุตนั้นควบคุมเวอร์ชันได้ง่ายกว่า รองรับการเขียนสคริปต์ทั้งสคีมาและข้อมูล
ในการสร้างสคริปต์ให้รัน:
สคริปต์ schemazen.exe - เซิร์ฟเวอร์ localhost - ฐานข้อมูล db --scriptDir c: \ somedir
จากนั้นเพื่อสร้างฐานข้อมูลใหม่จากการรันสคริปต์:
schemazen.exe สร้าง - เซิร์ฟเวอร์ localhost - ฐานข้อมูล db --scriptDir c: \ somedir
เราลงเอยด้วยการใช้การสร้างสคริปต์ SSMS ร่วมกันเพื่อแยกสคีมาและข้อมูลจากนั้นใช้เครื่องมือฐานข้อมูลของเราเองซึ่งช่วยให้สามารถแยกวิเคราะห์คำหลักและการแทนที่ด้วยโทเค็นในสคริปต์ นอกจากนี้ยังช่วยให้มั่นใจว่าสคริปต์จะถูกใช้เพียงครั้งเดียว
ทำไม?
ตัวอย่างสคริปต์ (แก้ไขเพื่อความกะทัดรัด)
-- Sleep: 5
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO
EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO
USE [$Database$]
GO
IF '1'!='$IntegratedSecurity$'
BEGIN
CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
CREATE USER [$User$] FOR LOGIN [$Login$]
EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO
ฉันขอแนะนำให้ดูที่ RedGate SQL packager ไม่ฟรี แต่มีประโยชน์มากพอที่จะคุ้มค่ากับราคา
เพียงแค่ดูข้อมูลตารางเพื่อส่งออกเนื้อหาข้อมูลตารางทั้งหมดใน Management Studio 2012 และ 2014 มันถูกซ่อนไว้เล็กน้อย แต่ฉันพบตัวเลือกหลังจากที่บางคนมอง:
หากคุณจำเป็นต้องทำโดยใช้โปรแกรมคุณสามารถใช้ไลบรารี SQL DMO (OLE) กับ SQL Server 2000 ได้ แต่มีแนวโน้มว่าคุณอาจต้องการใช้ไลบรารี SQL SMO (ไลบรารี. NET ดั้งเดิม) กับ SQL Server 2005 และใหม่กว่า
ไลบรารีทั้งสองนี้เป็นส่วนหนึ่งของการติดตั้งเครื่องมือการดูแลระบบ SQL Server
ในกรณีนี้การสร้างสคริปต์ฐานข้อมูลแบบเต็มจาก SQL Server Management Studio ไม่เพียงพอ