2010-08-23 54 views
6

Tôi đã tạo một Dự án Cơ sở dữ liệu SQL Server mới trong VS 2010, nhập các đối tượng cơ sở dữ liệu và cài đặt từ cơ sở dữ liệu cục bộ có tên "người quản lý" và nhận được lỗi sau trong khi cố gắng xây dựng dự án:VS 2010 Dự án Cơ sở dữ liệu - SQL03006 Lỗi

SQL03006: Chế độ xem: [dbo]. [Vw_mlFunds] có tham chiếu chưa được giải quyết cho đối tượng [người quản lý]. [Dbo]. [Mlfunds].

Tôi không biết tại sao chế độ xem này đủ điều kiện tham chiếu bảng để bao gồm tên cơ sở dữ liệu thực và tôi không muốn thay đổi sql, vì mã của người khác và về mặt kỹ thuật không chính xác. Nhưng tôi nghĩ rằng hoàn toàn đủ điều kiện tên bảng để bao gồm tên của cơ sở dữ liệu là khó hiểu trình biên dịch VS, vì nó được mong đợi [dbo]. [Mlfunds], không phải [người quản lý]. [Dbo]. [Mlfunds]. Cách tốt nhất để giải quyết vấn đề này? Tôi có thể thiết lập một biến tên/bí danh tên cơ sở dữ liệu mới ở đâu đó không? Hoặc tôi sẽ phải refactor/sửa đổi sql để có được nó để biên dịch? Cảm ơn trước.

Trả lời

5

Thực ra, có vẻ như mã sẽ phải được sửa đổi vì điều này không được hỗ trợ. Câu trả lời được tìm thấy trong bài viết này:

Using local 3-part names in programmability objects

+0

Nếu bạn móc điều này lên và không thể hiểu tại sao kịch bản so sánh của bạn vẫn đang bị đánh bom, hãy đảm bảo đặt tùy chọn "Biến SQLCMD" trong màn hình "Chọn nguồn/lược đồ đích" ban đầu. – chprpipr

1

Bạn cần phải tạo một dự án cơ sở dữ liệu khác cho cơ sở dữ liệu [người quản lý] và để dự án của bạn 'tham chiếu' dự án khác. Bạn có thể làm điều này như một bước kỹ sư đảo ngược đơn giản trên cơ sở dữ liệu [người quản lý] sẽ nhập tất cả các đối tượng trong cơ sở dữ liệu đó vào một dự án VSDB mới. Xem Using References in Database Projects.

+0

Ông có thể làm rõ điều này cho tôi? Tôi đang bối rối bởi sự cần thiết cho một tài liệu tham khảo khi cả hai đối tượng (bảng cơ sở và xem) cư trú trong cùng một cơ sở dữ liệu [quản lý]. –

+1

Tôi nghĩ [managed] là một cơ sở dữ liệu khác. Nếu khung nhìn đủ điều kiện rõ ràng tên bảng với tên cơ sở dữ liệu thì định nghĩa khung nhìn về mặt kỹ thuật là * không chính xác *, vì dự án có thể được triển khai dưới tên DB khác và thậm chí sau triển khai nó có thể được khôi phục/sao chép/đính kèm/snapshot nhiều tên và chế độ xem sẽ không hợp lệ trong tất cả các trường hợp đó. –

+0

Tôi nghĩ rằng việc đánh giá đầy đủ bảng với tên cơ sở dữ liệu là vô tình trên một phần của nhà phát triển ban đầu, và chúng tôi có thể sẽ sửa đổi kịch bản xem để loại bỏ tham chiếu tên cơ sở dữ liệu, nhưng kịch bản tạo cho khung nhìn sẽ chạy lỗi trong ssms và, khi chạy với cơ sở dữ liệu của người quản lý, nó sẽ nhận ra tham chiếu rõ ràng đến người quản lý như chính nó. Tôi đồng ý đây là mã cẩu thả nhưng đã cố gắng không để gây rối với nó cho thời điểm này, vì nó sẽ yêu cầu thử nghiệm. Đó là lý do tại sao tôi đã cố gắng tìm ra nếu có một số cách xung quanh này. –

2

tôi đã nhận được báo lỗi tương tự sau khi tạo một dự án và nhập khẩu một DB. Vấn đề đối với tôi là tham chiếu bảng FROM bao gồm tên đầy đủ, nhưng các trường đã chọn thì không; như sau

SELEC l.UserID, l.Email, m.DOB, ... 
FROM ***[DBName].dbo***.Layout as l 
LEFT OUTER JOIN masterUs as m 

tôi sửa đổi tài liệu tham khảo đầy đủ bằng cách loại bỏ các phần dbname và DBO và tất cả các lỗi đã được giải quyết

SELECT l.UserID, l.Email, m.DOB, .... 
FROM Layout as l 
LEFT OUTER JOIN masterUs as m 
Các vấn đề liên quan