5

Giả sử bạn có một dự án cơ sở dữ liệu và bạn KHÔNG có "Luôn tạo lại cơ sở dữ liệu" được kiểm tra trong cài đặt Database.sqldeployment của bạn. Và giả sử bạn triển khai đến một máy chủ đã có cơ sở dữ liệu bằng tên của bạn đang triển khai.Làm cách nào để ngăn chặn triển khai dự án cơ sở dữ liệu VS2010 tạo cơ sở dữ liệu thả?

Trong trường hợp nào cơ sở dữ liệu triển khai sẽ tạo tập lệnh có tuyên bố "DROP DATABASE"?

Nếu bạn không bao giờ muốn cơ sở dữ liệu của mình bị thả bởi tập lệnh triển khai được tạo bằng cách bấm chuột phải vào dự án cơ sở dữ liệu của bạn và chọn "Triển khai", bạn có thể thực hiện một số bước nào để ngăn chặn điều này?

+0

Bất kỳ cơ hội nào bạn có thể đăng tệp dự án và tệp cài đặt? AFAIK tùy chọn bạn đã đề cập là tùy chọn duy nhất có thể gây ra DROP DATABASE. –

+0

Thật không may, không phải vì dự án thuộc về khách hàng. Ngoài ra, tôi thậm chí không thể tái tạo điều này. Dự án bây giờ tạo ra kịch bản mà không cần thả. Tôi đang cố gắng tìm ra những gì có thể đã gây ra nó để tạo ra các kịch bản với một giọt trước đó. Frank, bên dưới, đã có một suy nghĩ tốt về Target Connection. Mặc dù kết nối đích đã được thiết lập, có thể nó đã được thiết lập chỉ trong các thiết lập dự án của tôi, và không phải trong các thiết lập môi trường riêng biệt của tôi. Tôi cũng cho rằng có thể có một kết nối đích xác định, nhưng không phải là VPN có thể gây ra nó. idk. –

+0

Ah có ý nghĩa. Yeah dev dev so với cài đặt dự án có thể hơi khó hiểu. Rất vui khi họ bỏ ý tưởng đó trong SSDT. Bạn có nhớ lại nếu triển khai được thực hiện một cách tương tác hay đã xây dựng một máy chủ chạy nó cho bạn? Nếu nó là sau này thì có thể có một cái gì đó hữu ích bị bắt trong nhật ký xây dựng. –

Trả lời

3

Ngoài "Luôn tạo lại cơ sở dữ liệu" KHÔNG được chọn, bạn cũng nên kiểm tra tab Phát triển trên trang Thuộc tính của dự án cơ sở dữ liệu của bạn. Đảm bảo bạn xác định kết nối đích. Khi bạn không định nghĩa một dự án sẽ luôn luôn và chỉ triển khai như-nếu cơ sở dữ liệu đích không tồn tại. Hành vi này là do thiết kế. xem chi tiết này link để biết thêm chi tiết.

Đề xuất của tôi là tạo kết nối bằng Xác thực Windows để mỗi người dùng sẽ có quyền truy cập vào phần mở rộng mà họ được yêu cầu.

Cũng xin lưu ý rằng bạn sẽ phải làm điều này cho mỗi Triển khai cấu hình (ví dụ Debug, phát hành, vv)

Cá nhân tôi thiết lập các hành động triển khai để chỉ tạo ra một kịch bản và chạy nó bằng tay để được vào phía an toàn!

+1

Cảm ơn Frank. Khi nó quay ra, tôi đã có một Target Connection được định nghĩa cho cấu hình dự án đó, nó là một chuỗi kết nối hợp lệ và tôi đã thiết lập hành động deploy để tạo kịch bản để tôi có thể chạy thủ công từ SSMS. Tuy nhiên, kịch bản vẫn có một tuyên bố thả trong đó. Bạn đưa ra một số gợi ý tuyệt vời và thậm chí sau khi đọc qua liên kết tuyệt vời mà bạn đã cung cấp, tôi vẫn cảm thấy có một số lý do khác khiến tập lệnh triển khai của tôi tạo ra cơ sở dữ liệu thả. –

Các vấn đề liên quan