Tại sao: r lệnh SQLCMD được đánh dấu là sai trong Tập lệnh triển khai bài?


17

Tôi đã làm việc một vài lần với các kịch bản triển khai bài và luôn luôn sử dụng hành động xây dựng "PostDeploy" một cách trực quan, bởi vì đó chính là nó. Bây giờ lần đầu tiên tôi cố gắng làm theo hướng dẫn tích hợp từ mẫu của tập lệnh để sử dụng ":r somescript.sql"cú pháp.

Ngay lập tức dòng này bị đánh dấu là sai:

"Cú pháp sai SQL80001 bên cạnh ':'"

Tôi đã tìm thấy các đề xuất để đặt PDS thành Xây dựng hành động "không". Điều này không giúp được gì, lỗi vẫn còn. Tôi đang thiếu gì ở đây?


xin lỗi tôi đoán là rõ ràng hơn "kịch bản nào được đặt thành hành động có": r "bên trong nó?" :)
Ed Elliott

Câu trả lời:


14

Giả sử rằng lỗi xảy ra trong quá trình xây dựng và bạn không có bất kỳ lỗi cú pháp thực tế nào và đó là một đơn giản

:r path\to\file.sql

sau đó lỗi cũng xảy ra khi tập tin đang nhập không tồn tại. Vui lòng kiểm tra vị trí của tập tin. Nếu bạn không cung cấp một đường dẫn tuyệt đối, thì đường dẫn đó sẽ liên quan đến thư mục giải pháp (ít nhất là đối với tôi).

Nếu, trong khi phát triển, bạn muốn thấy lỗi mà quá trình xây dựng báo cáo, thì hãy đảm bảo bật "chế độ SQLCMD" trong trình soạn thảo T-SQL trong Visual Studio. Có một nút ở phía xa bên phải trong thanh nút có dấu "!" trong đó sẽ cho phép điều này. Hoặc bạn có thể vào menu SQL , chọn Transact-SQL Editor -> , chọn Cài đặt thực thi -> , sau đó chọn Chế độ SQLCMD . Bây giờ khi bạn Thực thi tập lệnh, nó sẽ diễn giải chính xác :r, giống như quá trình xây dựng / xuất bản.

Ngoài ra, Tập lệnh triển khai bài đăng (PDS) của bạn cần được đặt Hành động xây dựng thành PostDeploy . Nếu nó được đặt thành Không thì nó sẽ bị bỏ qua hoàn toàn bởi quá trình xây dựng SSDT.


4

Lỗi hợp lệ

Điều này là do :r somescript.sqlsql không hợp lệ. Bạn đang thấy một lỗi cú pháp, đó chính xác là thông báo lỗi.

SQL80001: Cú pháp không chính xác gần ':'.

Chế độ SQLCMD

Kịch bản triển khai bài được thực thi trong Chế độ SQLCMD.

Tiện ích sqlcmd cho phép bạn nhập các câu lệnh Transact-SQL, quy trình hệ thống và tệp tập lệnh tại dấu nhắc lệnh, trong Trình soạn thảo truy vấn ở chế độ SQLCMD, trong tệp tập lệnh Windows hoặc trong bước công việc của hệ điều hành (Cmd.exe) của SQL Server Công việc đại lý. Tiện ích này sử dụng ODBC để thực thi các lô Transact-SQL.

Nghị quyết

Hãy nhớ rằng bạn có thể kết nối với DB và thực hiện sql từ Visual Studio. Bạn sẽ thấy lỗi cú pháp tương tự nếu bạn mở cùng một tập lệnh trong SSMS. Tuy nhiên, trong cả SSMS và Visual Studio, bạn có thể "bật" Chế độ SQLCMD.

VS 2017

  • nhấp chuột phải vào trình soạn thảo chứa tập lệnh sql
  • nhấp vào Cài đặt thực thi
  • nhấp vào Chế độ SQLCMD
  • Lưu ý rằng bạn có thể làm điều tương tự từ menu SQL

SSMS 17, SSMS 18

  • Truy vấn (mục menu)
  • Chế độ SQLCMD

Xem thêm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.