สคริปต์ฐานข้อมูล SQL-Server ทั้งหมด


95

มีวิธีใดบ้างที่ฉันสามารถรับสคริปต์ของตาราง procs และวัตถุอื่น ๆ จากฐานข้อมูลได้ ฉันรู้ว่ามีตัวเลือกในการเขียนสคริปต์ฐานข้อมูล แต่ให้สคริปต์ระดับบนสุดบางประเภทเท่านั้นไม่ใช่สคริปต์สำหรับสร้างตาราง procs, udfs, .etc ทั้งหมด


6
เขาติดแท็ก SQL Server 2008 ดังนั้นฉันคิดว่านั่นคือสิ่งที่เขาใช้
Colin Mackay

1
สมมติว่าไปที่ serverfault.com ไม่ใช่เหรอ?
Salamander2007

คำตอบ:


163

จาก Management Studio คลิกขวาที่ฐานข้อมูลของคุณ งาน -> สร้างสคริปต์

ที่ควรทำ


2
อีกทางเลือกหนึ่งคือการใช้ SQL SMO และเขียนสคริปต์โดยใช้โปรแกรม (เช่นหากต้องใช้สคริปต์ปกติ)
RobS

มีวิธีตั้งค่าสคริปต์เพื่อให้การตั้งค่าเหมือนกันเสมอไม่ว่าใครจะเรียกใช้ ฉันคาดการณ์ว่าคนในทีม dev ของเราจะเขียนทับไฟล์นี้ด้วยการตั้งค่าที่แตกต่างกันในแต่ละครั้ง ...
Joe Phillips

@ โจฉันจะมุ่งหน้าไปตามเส้นทางที่ RobS กำลังพูดถึง คุณควรจะทำได้ด้วย PowerShell ไม่เช่นนั้นให้เริ่มดูที่เครื่องมือ RedGate หรือ Visual Studio Team Systems กับ Database Developer
Chris Brandsma

7
โดยค่าเริ่มต้นจะไม่เขียนสคริปต์ข้อมูล ภายใต้ตัวเลือกตาราง / มุมมองเลือก "ข้อมูลสคริปต์ -> จริง" อีกทางเลือกหนึ่งที่มีประโยชน์คือ "Script Drop -> True"
Stephen Hosking

1
สคริปต์ที่สร้างขึ้นจะไม่มีข้อมูลใด ๆ เกี่ยวกับการเรียงคอลัมน์เว้นแต่คุณจะเลือกตัวเลือกสุดท้ายในเมนูพิเศษ> ตัวเลือก> การสร้างสคริปต์ ในภาษาเยอรมันตัวเลือกคือ "Sortierung einschließen" แม้ตัวเลือกเหล่านี้ส่วนใหญ่จะรวมอยู่ในวิซาร์ดที่สร้างสคริปต์ แต่ตัวเลือกนี้ไม่ใช่ (SQL Server 2008) คุณต้องเลือกตัวเลือกก่อนเรียกวิซาร์ด
Olivier Faucheux

14

ฉันเขียนยูทิลิตี้บรรทัดคำสั่งโอเพ่นซอร์สชื่อSchemaZenที่ทำสิ่งนี้ เร็วกว่าการเขียนสคริปต์จากสตูดิโอการจัดการมากและเอาต์พุตนั้นควบคุมเวอร์ชันได้ง่ายกว่า รองรับการเขียนสคริปต์ทั้งสคีมาและข้อมูล

ในการสร้างสคริปต์ให้รัน:

สคริปต์ schemazen.exe - เซิร์ฟเวอร์ localhost - ฐานข้อมูล db --scriptDir c: \ somedir

จากนั้นเพื่อสร้างฐานข้อมูลใหม่จากการรันสคริปต์:

schemazen.exe สร้าง - เซิร์ฟเวอร์ localhost - ฐานข้อมูล db --scriptDir c: \ somedir

สวัสดีฉันต้องการรับ SQL QUERY จากฐานข้อมูลในเครื่องของฉันที่สร้างขึ้นใน Visual Studio ฉันจะทำสิ่งนั้นด้วยเครื่องมือนี้ได้อย่างไร ฉันต้องใช้คำแนะนำไฟล์. pdf หรืออย่างไร ขอบคุณ.
Karlo A. López

เป็นไฟล์ SQL DataBase ขนาดกะทัดรัด
Karlo A. López

1
HOLY CRAP นี้รวดเร็วและยอดเยี่ยม
ConstantineK

1
@hobs ฉันดีใจที่คุณพบว่ามันมีประโยชน์ : D
Seth Reno

1
@SethReno ดัชนี sys เสียหายบนฐานข้อมูลของฉัน = SMO ไม่สามารถเขียนสคริปต์อะไรออกมาสคริปต์ของคุณทำได้ดังนั้นโดยพื้นฐานแล้วช่วยให้ฉันประหยัดเวลาได้มากในการทำอึด้วยตนเอง BTW วิศวกรรมย้อนกลับที่รวดเร็วอย่างน่าประทับใจสำหรับทุกสิ่งเช่นเร็วกว่า SSMS 1000 เท่าและดูเหมือนว่าเร็วกว่า SMO ด้วยตัวเอง (ไม่ใช่น้อยที่สุดเพราะเวลาเริ่มต้น)
ConstantineK

4

ผมเขียนยูทิลิตี้สำหรับงานนี้SMOscript

การสร้างสคริปต์ดำเนินการโดยไลบรารี SMO และสนับสนุนชนิดอ็อบเจ็กต์ใหม่ใน SQL 2005 และ 2008


อืมฉันติดตั้งแอพ smo ของคุณบน Vista 64 บิตแล้ว ติดตั้งสำเร็จ แต่ฉันไม่เห็นรายการในไดเรกทอรีโปรแกรมของฉันหรือรายการโปรแกรมทั้งหมด
PositiveGuy

3

เราลงเอยด้วยการใช้การสร้างสคริปต์ SSMS ร่วมกันเพื่อแยกสคีมาและข้อมูลจากนั้นใช้เครื่องมือฐานข้อมูลของเราเองซึ่งช่วยให้สามารถแยกวิเคราะห์คำหลักและการแทนที่ด้วยโทเค็นในสคริปต์ นอกจากนี้ยังช่วยให้มั่นใจว่าสคริปต์จะถูกใช้เพียงครั้งเดียว

ทำไม?

  • เราจำเป็นต้องสนับสนุนการติดตั้งบน SQL Server 2000, 2005 และ 2008 และมีการเปลี่ยนแปลงประเภทข้อมูลระหว่างเวอร์ชันเช่น 2005+ มี nvarchar (สูงสุด) ในขณะที่ 2000 รองรับเฉพาะ ntext ดังนั้นสคริปต์ของเราใช้โทเค็นและขึ้นอยู่กับตัวเลือกฐานข้อมูลแทนที่ด้วยประเภทที่ถูกต้อง
  • การเรียกใช้สคริปต์บางสคริปต์ต้องใช้ระยะเวลารอหลังจากดำเนินการเช่นเราพบว่าหากคุณไม่รอสองสามวินาทีหลังจากสร้างฐานข้อมูลใหม่ผ่านสคริปต์ SQL Server อาจล้มเหลวในบางครั้ง (เนื่องจากไม่มีเวลาสร้างฐานข้อมูล ไฟล์) เมื่อสร้างตารางเป็นต้น
  • เราต้องการรักษาประวัติของสคริปต์ที่ถูกเรียกใช้และเมื่อใด
  • เราต้องการอนุญาตให้โปรแกรมติดตั้ง Wix MSI ของเราระบุสตริงการเชื่อมต่อและข้อมูลรับรองและต้องการวิธีส่งผ่านสิ่งเหล่านี้ไปยังสคริปต์อีกครั้งโดยใช้โทเค็นและตรรกะเงื่อนไขบางอย่าง

ตัวอย่างสคริปต์ (แก้ไขเพื่อความกะทัดรัด)

-- 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


1

เพียงแค่ดูข้อมูลตารางเพื่อส่งออกเนื้อหาข้อมูลตารางทั้งหมดใน Management Studio 2012 และ 2014 มันถูกซ่อนไว้เล็กน้อย แต่ฉันพบตัวเลือกหลังจากที่บางคนมอง:

  1. คลิกขวาที่ฐานข้อมูล
  2. เลือก 'งาน'> 'สร้างสคริปต์ ... '
  3. ใน 'Set Scripting Options' คลิก 'Advanced'
  4. ภายใต้ "ทั่วไป" ตั้งค่า "ประเภทของข้อมูลเป็นสคริปต์" เป็นจริง (อยู่ที่ด้านล่างของกลุ่ม "ทั่วไป")

0

หากคุณจำเป็นต้องทำโดยใช้โปรแกรมคุณสามารถใช้ไลบรารี SQL DMO (OLE) กับ SQL Server 2000 ได้ แต่มีแนวโน้มว่าคุณอาจต้องการใช้ไลบรารี SQL SMO (ไลบรารี. NET ดั้งเดิม) กับ SQL Server 2005 และใหม่กว่า

ไลบรารีทั้งสองนี้เป็นส่วนหนึ่งของการติดตั้งเครื่องมือการดูแลระบบ SQL Server

ในกรณีนี้การสร้างสคริปต์ฐานข้อมูลแบบเต็มจาก SQL Server Management Studio ไม่เพียงพอ

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