Tôi có một tập các kịch bản cần được chạy theo một thứ tự nhất định. Tôi muốn tạo một "tệp chủ" liệt kê tất cả các tệp khác và thứ tự đúng của chúng. Về cơ bản giống như một tệp bao gồm từ C ++ hoặc ASP / VBScript.
Tôi có một tập các kịch bản cần được chạy theo một thứ tự nhất định. Tôi muốn tạo một "tệp chủ" liệt kê tất cả các tệp khác và thứ tự đúng của chúng. Về cơ bản giống như một tệp bao gồm từ C ++ hoặc ASP / VBScript.
Câu trả lời:
Nếu bạn đang sử dụng SQLCMD , bạn có thể sử dụng :r FileName
để bao gồm một tệp .sql riêng.
: r Tên tệp
Phân tích các câu lệnh T-SQL bổ sung và các lệnh SQLCMD từ tệp được chỉ định bởi FileName vào bộ đệm của câu lệnh. Tên tệp được đọc liên quan đến thư mục khởi động cho Visual Studio. Các tập tin được đọc và thực hiện sau khi gặp một bộ kết thúc hàng loạt. Bạn có thể phát hành nhiều lệnh: r. Tệp có thể bao gồm bất kỳ lệnh SQLCMD nào, bao gồm cả bộ kết thúc hàng loạt được xác định trong Công cụ, Tùy chọn. Bạn có thể sử dụng: r trong tập lệnh triển khai trước hoặc sau triển khai để bao gồm các tập lệnh khác.
Theo nghĩa của các tiền xử lý C cổ đại chắc chắn không có
Nếu bạn có một tập hợp các tệp có đường dẫn tuyệt đối mà bạn muốn đưa vào theo thứ tự vô điều kiện, bạn có thể sử dụng công cụ dòng lệnh sqlcmd hoặc sử dụng SSMS trong sqlcmdmode như được đề cập bởi @mfredrickson và @Marian.
Nhưng nếu bạn muốn các đường dẫn tương đối hoặc có điều kiện bao gồm, bạn cần sử dụng một số trình bao bọc gọi sqlcmd (hoặc một trong những tiền thân không dùng nữa của nó là isql hoặc osql).
Hiện tại trong công việc của tôi trong tình huống này, tôi đang xem xét và mở rộng mã vbs và hta cũ. Tôi không hoàn toàn hạnh phúc, nhưng đó là một quyết định thực dụng. Nó đang hoạt động và người dùng cuối đang ở nhà với GUI hta và không cần cài đặt phần mềm bổ sung.
Đối với một thiết kế mới, tôi sẽ bắt đầu nghĩ đến việc sử dụng WPF và PowerShell để thực hiện các cuộc gọi của sqlcmd, nhưng với các khách hàng hiện tại của chúng tôi, tôi không thể đoán được sự hiện diện của PowerShell V2.
Trong những lần trước, chúng tôi đã viết các lô cmd đơn giản cho mục đích này, một vài trong số chúng vẫn được sử dụng.
Tôi đoán có những công cụ hiện tại, đặc biệt là những công cụ nhắm mục tiêu Workflows, có thể phù hợp ở đây. Tôi không quen thuộc với những người đó.
Cùng với chế độ SQLCMD trong Management Studio, bạn cũng có thể sử dụng tệp bó để sử dụng làm tệp chính để sắp xếp và gọi tất cả các tệp sql của mình bằng cách sử dụng tiện ích SQLCMD .
Chế độ SQLCMD là một mô phỏng về việc sử dụng tiện ích bên trong Studio quản lý, do đó không có sự khác biệt lớn giữa các chế độ. Ngoại trừ việc đôi khi tôi thích chạy các đợt (không mở M Studio nữa ... tải db chính xác ... vv). Tôi thích cấu hình mọi thứ trong lô, bao gồm các tệp đầu ra.
Tôi đồng ý, một bộ tiền xử lý T-SQL rất cần thiết. Tôi đã phát triển một cái riêng của mình trong C #, khiến tôi mất cả tiếng đồng hồ. Bên cạnh việc kiểm soát thứ tự thực thi các tập lệnh SQL, nó cũng cho phép tôi có các macro trông giống như UDF vô hướng và thuận tiện để sử dụng, nhưng hoạt động nhanh như UDF nội tuyến.
Tôi thích câu trả lời của bernd_k . Tùy thuộc vào cách bạn đặt tên cho các tập lệnh của mình, như bao gồm một số, SQL Server PowerShell (SQLPS) có thể được sử dụng nếu bạn đang chạy SQL Server 2008 trở lên. Sau đó, ngay cả khi bạn đang sử dụng SQL 2005, bạn có thể sử dụng PowerShell và SMO cho năm 2005.
Lưu ý bên lề: Tôi tin rằng SQLCMD cuối cùng sẽ được đưa vào danh sách không dùng nữa và đang được thay thế bằng SQLPS, PowerShell.
Có một vài lựa chọn khác là tốt.
SQLCMD
hãy cho tôi biết, vì hầu hết những gì tôi tìm thấy đều tham khảo PowerShell . Tôi cũng không thấy tài liệu tham khảo sqlcmd
được sử dụng với SSDT ngoại trừ có thể để so sánh lược đồ, nhưng tôi không bao giờ sử dụng các tập lệnh được tạo.