Kịch bản triển khai Visual Studio 2010 tạo các đối tượng theo thứ tự sai - kích hoạt sau khi thủ tục được lưu trữ


7

Tôi đã tạo một khung nhìn chọn từ nhiều bảng trong một truy vấn phức tạp.

  • Do sự phức tạp, tôi đã tạo các trình kích hoạt chèn / cập nhật / xóa INSTEAD OF để xử lý các thao tác này trên chế độ xem.
  • Tôi cũng tạo các thủ tục lưu trữ cập nhật chế độ xem.

Khi tôi xây dựng dự án cơ sở dữ liệu VS2010, tập lệnh SQL chứa các lệnh CREATE theo thứ tự này: (1) khung nhìn, (2) các thủ tục được lưu trữ, và sau đó (3) kích hoạt.

Bây giờ, khi tôi chạy tập lệnh triển khai, tôi gặp lỗi:

*** SQL01268    D:\scripts\vs2010\Database.sql (28494,0).Net SqlClient Data Provider:
Msg 4405, Level 16, State 1, Procedure MyViewSave, Line 18 View or function 'MyView' is
not updatable because the modification affects multiple base tables

Nếu các kích hoạt sẽ được tạo ra trước khi thủ tục được lưu trữ, sẽ không có vấn đề gì.

Làm cách nào để đảm bảo các trình kích hoạt được tạo trước các thủ tục được lưu trữ?

Cảm ơn!

Câu trả lời:


5

Bạn có thể đã gặp phải một vấn đề đã biết với Visual Studio 2010:

Điều đó nói rằng, Microsoft khuyên bạn nên giúp Visual Studio phát hiện các phụ thuộc đối tượng mà nó dường như đang bỏ qua trong tập lệnh triển khai của nó bằng cách:

lược đồ đủ điều kiện [ing] tên của các đối tượng có liên quan đến các mối quan hệ phụ thuộc.

Vì vậy, nếu mọi thứ bạn đang phát triển nằm trong dbolược đồ, hãy đảm bảo trả trước các Proc và xem các tên gây rắc rối cho bạn với tên lược đồ của chúng. Ví dụ: dbo.MyViewthay vì chỉ MyView. Visual Studio có tính năng "Tên đủ điều kiện" trong menu Refactor khi bạn nhấp chuột phải vào một đối tượng sẽ giúp bạn làm điều đó rất nhanh.

Nếu điều đó không có ích, hãy cung cấp cho Google một vòng quay và xem xét một số cách giải quyết được đề xuất trên các trang được liên kết ở trên. Hãy cho chúng tôi biết những gì đã kết thúc làm việc cho bạn.

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.