2013-08-29 30 views
11

tôi đang cố gắng để tạo ra một giải pháp cơ sở dữ liệu trong Visual Studio 2012.Làm thế nào để tránh tham chiếu vòng tròn với dự án Cơ sở dữ liệu visual studio 2012

Tôi có 5 cơ sở dữ liệu mà tất cả các tồn tại trên cùng một máy chủ, vì vậy tôi đã nhập khẩu mỗi trong số họ vào một dự án cơ sở dữ liệu. Không may là có một vài đối tượng trong cơ sở dữ liệu tham chiếu đến các đối tượng trong cơ sở dữ liệu khác, vì vậy tôi đã cố gắng giải quyết chúng bằng cách thêm một tham chiếu cơ sở dữ liệu để tạo một biến cơ sở dữ liệu để tham chiếu đến các cá thể cơ sở dữ liệu chéo này. Quay lại đầu trang

Vấn đề là tôi có cơ sở dữ liệu Một tham chiếu B và B cũng tham chiếu A, và nó sẽ không cho phép tôi thêm hai tham chiếu này. Tôi nhận được hộp thông báo rằng "Thêm dự án này làm tài liệu tham khảo sẽ gây ra sự phụ thuộc vòng tròn".

Bất kỳ ý tưởng nào về cách tiếp cận để giải quyết vấn đề này? Tôi đoán một cách có thể là để tạo ra một giải pháp cho mỗi cơ sở dữ liệu, nhưng tôi không muốn nếu có một cách tốt hơn để làm điều đó.

Chúng tôi đang cố gắng thiết lập bản dựng tự động, vì vậy tôi thực sự cần các dự án cơ sở dữ liệu để biên dịch.

Trả lời

13

Bạn sẽ muốn trích xuất lược đồ cơ sở dữ liệu của mình thành tệp dacpac (giả sử bạn đang sử dụng tệp SQLT SQLProj và không phải tệp DBProj cũ cho dự án của bạn). Bạn có thể làm điều này thông qua SSMS hoặc thông qua dòng lệnh SQLPackage. Sau khi trích xuất, đặt chúng ở một số nơi mà tất cả các dự án có thể nhấn (và tốt nhất là vẫn còn dưới sự kiểm soát nguồn để mọi người khác có thể tham khảo nó). Thêm các tệp dacpac đó vào dự án của bạn dưới dạng tham chiếu cơ sở dữ liệu, có thể không có tùy chọn để sử dụng biến cho Tên DB.

Tôi đã viết lên thêm tài liệu tham khảo cơ sở dữ liệu trên blog của tôi ở đây: thêm http://schottsql.blogspot.com/2012/10/ssdt-external-database-references.html

Một lưu ý - nếu bạn đang xây dựng cơ sở dữ liệu mới từ các dự án này, bạn có thể sẽ cần phải đi qua nhiều đèo. Tắt tùy chọn để chạy dưới dạng giao dịch và thất bại khi có lỗi nên một số đối tượng sẽ được tạo, lặp lại khi cần cho đến khi tất cả các đối tượng được tạo. Tôi đã sử dụng một biến trong các dự án của tôi được gọi là "DeployType" và thiết lập các kịch bản lệnh triển khai trước và sau của tôi để xử lý DeployType của "New" khác nhau để nó không cố gắng điền/cập nhật bất kỳ dữ liệu nào cho các bản dựng "Mới".

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