ฉันมีชุดของสคริปต์ที่ต้องทำงานในลำดับที่แน่นอน ฉันต้องการสร้าง "ไฟล์หลัก" ซึ่งแสดงรายการไฟล์อื่นทั้งหมดและลำดับที่ถูกต้อง โดยทั่วไปชอบไฟล์รวมจาก C ++ หรือ ASP / VBScript
ฉันมีชุดของสคริปต์ที่ต้องทำงานในลำดับที่แน่นอน ฉันต้องการสร้าง "ไฟล์หลัก" ซึ่งแสดงรายการไฟล์อื่นทั้งหมดและลำดับที่ถูกต้อง โดยทั่วไปชอบไฟล์รวมจาก C ++ หรือ ASP / VBScript
คำตอบ:
หากคุณใช้SQLCMDคุณสามารถใช้:r FileNameเพื่อรวมไฟล์. sql แยกต่างหาก
: r FileName
วิเคราะห์คำสั่ง T-SQL เพิ่มเติมและคำสั่ง SQLCMD จากไฟล์ที่ระบุโดย FileName ลงในแคชคำสั่ง ชื่อไฟล์ถูกอ่านสัมพันธ์กับไดเรกทอรีเริ่มต้นสำหรับ Visual Studio ไฟล์ถูกอ่านและดำเนินการหลังจากพบชุดแบตเตอร์ปลายทาง คุณสามารถออกคำสั่งหลายคำสั่งได้ ไฟล์สามารถรวมคำสั่ง SQLCMD ใด ๆ รวมถึงแบทช์เทอร์มิเนเตอร์ที่กำหนดไว้ในเครื่องมือตัวเลือก คุณสามารถใช้: r ในสคริปต์ก่อนการปรับใช้หรือหลังการปรับใช้เพื่อรวมสคริปต์อื่น ๆ
ในความรู้สึกของตัวประมวลผลล่วงหน้าโบราณC ไม่แน่นอน
หากคุณมีชุดของไฟล์ที่มีพา ธ สัมบูรณ์ที่กำหนดซึ่งคุณต้องการรวมไว้ในลำดับที่ไม่มีเงื่อนไขคุณสามารถใช้เครื่องมือบรรทัดคำสั่ง sqlcmd หรือใช้ SSMS ใน sqlcmdmode ดังกล่าวโดย @mfredrickson และ @Marian
แต่ถ้าคุณต้องการเส้นทางสัมพัทธ์หรือการรวมเงื่อนไขคุณต้องใช้ wrapper บางตัวเรียก sqlcmd (หรือหนึ่งในผู้ทำหน้าที่คัดค้าน isql หรือ osql รุ่นก่อน ๆ )
ขณะนี้ที่งานของฉันในสถานการณ์นี้ฉันกำลังตรวจสอบและขยายรหัส vbs และ hta เก่า ฉันไม่ได้มีความสุขอย่างสมบูรณ์ แต่เป็นการตัดสินใจที่จริงจัง มันใช้งานได้และผู้ใช้อยู่ที่บ้านด้วย hta GUI และไม่จำเป็นต้องติดตั้งซอฟต์แวร์เพิ่มเติม
สำหรับการออกแบบใหม่ฉันจะเริ่มคิดถึงการใช้ WPF และ PowerShell เพื่อตัดการโทรของ sqlcmd แต่ด้วยลูกค้าปัจจุบันของเราฉันไม่สามารถเข้าใจว่ามี PowerShell V2 อยู่
ในสมัยก่อนแม้เราจะเขียนชุดคำสั่งแบบธรรมดาสำหรับจุดประสงค์นี้เรายังคงใช้งานได้บางส่วน
ฉันเดาว่ามีเครื่องมือในปัจจุบันโดยเฉพาะอย่างยิ่งการกำหนดเป้าหมายเวิร์กโฟลว์ซึ่งอาจเหมาะสมที่นี่ ฉันไม่คุ้นเคยกับสิ่งเหล่านั้น
พร้อมกับโหมด SQLCMDใน Studio จัดการคุณยังสามารถใช้ไฟล์แบตช์เพื่อใช้เป็นไฟล์หลักในการจัดและเรียกไฟล์ SQL ทั้งหมดของคุณโดยใช้ยูทิลิตี้ SQLCMD
โหมด SQLCMD เป็นการจำลองการใช้งานยูทิลิตี้ภายใน Management Studio ดังนั้นจึงไม่มีความแตกต่างระหว่างโหมด ยกเว้นบางครั้งฉันชอบเรียกใช้ชุดงาน (ไม่มีการเปิด M Studio เพิ่มเติม ... โหลด db ที่ถูกต้อง ... ฯลฯ ) ฉันชอบกำหนดค่าทุกอย่างในแบตช์รวมถึงไฟล์เอาต์พุต
ฉันยอมรับตัวประมวลผลล่วงหน้า T-SQL เป็นสิ่งจำเป็นอย่างยิ่ง ฉันพัฒนาตัวเองใน C # ซึ่งใช้เวลาเหมือนชั่วโมง นอกเหนือจากการควบคุมลำดับการดำเนินการของสคริปต์ SQL แล้วยังช่วยให้ฉันมีมาโครที่ดูเหมือน UDFs แบบสเกลาร์และใช้งานได้สะดวก แต่ทำงานได้เร็วเท่ากับ UDF แบบอินไลน์
ฉันชอบคำตอบของ bernd_k คุณสามารถใช้ SQL Server PowerShell (SQLPS) ได้ขึ้นอยู่กับว่าคุณตั้งชื่อสคริปต์ของคุณอย่างไรถ้าคุณใช้ SQL Server 2008 ขึ้นไป แม้ว่าคุณจะใช้ SQL 2005 คุณก็สามารถใช้ PowerShell และ SMO สำหรับปี 2005 ได้
หมายเหตุด้านข้าง: ฉันเชื่อว่า SQLCMD ในที่สุดจะถูกวางลงในรายการที่คิดค่าเสื่อมราคาและจะถูกแทนที่ด้วย SQLPS, PowerShell
มีตัวเลือกอื่น ๆ ด้วยเช่นกัน
SQLCMDแจ้งให้เราทราบเพราะส่วนใหญ่ของสิ่งลิตรพบคือการอ้างอิง PowerShell ฉันยังไม่เห็นการอ้างอิงที่sqlcmdใช้กับ SSDT ยกเว้นอาจเป็นการเปรียบเทียบ schema แต่ฉันไม่เคยใช้สคริปต์ที่สร้างขึ้น