เหตุใด: r คำสั่ง SQLCMD ที่ทำเครื่องหมายว่าผิดใน Post Deployment Script


18

ฉันทำงานสองสามครั้งด้วยสคริปต์การติดตั้งโพสต์และใช้การสร้าง "PostDeploy" โดยสังหรณ์ใจเสมอเพราะนั่นคือสิ่งที่มันเป็น ตอนนี้เป็นครั้งแรกที่ฉันพยายามทำตามคำสั่งในตัวจากแม่แบบของสคริปต์เพื่อใช้":r somescript.sql"ไวยากรณ์

ทันทีที่บรรทัดนี้ถูกทำเครื่องหมายว่าผิด:

"SQL80001 ไวยากรณ์ผิดถัดจาก ':'"

ฉันพบข้อเสนอแนะเพื่อตั้งค่า PDS เป็น Build Action "none" สิ่งนี้ไม่ช่วยข้อผิดพลาดจะยังคงอยู่ ฉันหายไปนี่อะไร


ขออภัยฉันเดาว่าชัดเจนกว่า "สคริปต์ชุดใดที่มีการดำเนินการ": r "ข้างในนั้น? :)
Ed Elliott

คำตอบ:


16

สมมติว่าข้อผิดพลาดเกิดขึ้นระหว่างกระบวนการสร้างและคุณไม่มีข้อผิดพลาดทางไวยากรณ์ที่แท้จริงและเป็นเรื่องง่าย

:r path\to\file.sql

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

หากในขณะที่กำลังพัฒนาคุณต้องการดูข้อผิดพลาดที่รายงานกระบวนการสร้างจากนั้นตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน "โหมด SQLCMD" ในตัวแก้ไข T-SQL ใน Visual Studio มีปุ่มทางด้านขวาสุดในแถบปุ่มที่มี "!" ในนั้นที่ควรเปิดใช้งานสิ่งนี้ หรือคุณสามารถไปที่SQLเมนูเลือกTransact-SQL Editor ->เลือกการตั้งค่าการดำเนินการ ->แล้วในที่สุดเลือกโหมด SQLCMD ตอนนี้เมื่อคุณเรียกใช้งานสคริปต์สคริปต์จะแปลความหมายได้อย่างถูกต้อง:rเช่นเดียวกับกระบวนการสร้าง / เผยแพร่

นอกจากนี้ยังโพสต์ปรับใช้ Script ของคุณ (PDS) จะต้องมีของการสร้างการดำเนินชุดPostDeploy หากตั้งค่าเป็นไม่มีจะถูกข้ามโดยกระบวนการสร้าง SSDT ทั้งหมด


4

ข้อผิดพลาดที่ถูกต้อง

นี่เป็นเพราะ:r somescript.sqlไม่ถูกต้อง sql คุณเห็นข้อผิดพลาดทางไวยากรณ์ซึ่งเป็นสิ่งที่ข้อความแจ้งข้อผิดพลาดระบุไว้อย่างชัดเจน

SQL80001: ไวยากรณ์ไม่ถูกต้องใกล้กับ ':'

โหมด SQLCMD

สคริปต์การปรับใช้โพสต์จะดำเนินการภายใต้โหมด SQLCMD

ยูทิลิตี้ sqlcmd ให้คุณป้อนคำสั่ง Transact-SQL, ขั้นตอนระบบและไฟล์สคริปต์ที่พรอมต์คำสั่งใน Query Editor ในโหมด SQLCMD ในไฟล์สคริปต์ Windows หรือในขั้นตอนงานระบบปฏิบัติการ (Cmd.exe) ของ SQL Server ตัวแทนงาน โปรแกรมอรรถประโยชน์นี้ใช้ ODBC เพื่อดำเนินการชุดงาน Transact SQL

มติ

จำไว้ว่าคุณสามารถเชื่อมต่อกับฐานข้อมูลและเรียกใช้งาน sql จาก Visual Studio คุณจะเห็นข้อผิดพลาดทางไวยากรณ์เดียวกันนี้หากคุณเปิดสคริปต์เดียวกันภายใน SSMS อย่างไรก็ตามทั้ง SSMS และ Visual Studio คุณสามารถ "เปิดใช้งาน" โหมด SQLCMD

VS 2017

  • คลิกขวาที่เครื่องมือแก้ไขที่มีสคริปต์ sql
  • คลิกการตั้งค่าการดำเนินการ
  • คลิกโหมด SQLCMD
  • โปรดทราบว่าคุณสามารถทำสิ่งเดียวกันได้จากเมนู SQL

SSMS 17, SSMS 18

  • ข้อความค้นหา (รายการเมนู)
  • โหมด SQLCMD

ดูสิ่งนี้ด้วย

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