2013-08-07 40 views
63

tôi đã tạo ra một UDF mà truy cập vào [INFORMATION_SCHEMA].[TABLES] xem:.tham khảo chưa được giải quyết phản đối [INFORMATION_SCHEMA] [BẢNG]

CREATE FUNCTION [dbo].[CountTables] 
(
    @name sysname 
) 
RETURNS INT 
AS 
BEGIN 
    RETURN 
    (
     SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name 
    ); 
END 

Trong Visual Studio, lược đồ và tên cho quan điểm đều được đánh dấu bằng một cảnh báo :

SQL71502: Hàm: [dbo]. [CountTables] có tham chiếu chưa được giải quyết đối tượng [INFORMATION_SCHEMA]. [TABLES].

Tôi vẫn có thể xuất bản dự án cơ sở dữ liệu mà không gặp bất kỳ sự cố nào và UDF dường như chạy đúng cách. IntelliSense điền tên của khung nhìn cho tôi, vì vậy nó dường như không có vấn đề gì với nó.

Tôi cũng đã thử thay đổi triển khai để sử dụng sys.objects thay vì chế độ xem này, nhưng tôi cũng đã đưa ra cảnh báo tương tự cho chế độ xem này.

Tôi làm cách nào để giải quyết cảnh báo này?

Trả lời

113

Thêm một tài liệu tham khảo cơ sở dữ liệu để master:

  1. Theo dự án, kích chuột phải vào Tài liệu tham khảo.
  2. Chọn Thêm tham chiếu cơ sở dữ liệu ....
  3. Chọn Cơ sở dữ liệu hệ thống.
  4. Đảm bảo chính được chọn.
  5. Bấm OK.

Lưu ý rằng có thể mất một lúc để VS cập nhật.

+5

Và chỉ là cảnh báo - nếu có ai đó cài đặt SSDT theo một đường dẫn khác, bạn _might_ gặp sự cố. Chúng tôi chạy vào đó trong dự án cuối cùng của chúng tôi, nơi một số đã có một E: lái xe và những người khác chỉ là một ổ C :. Chúng tôi đã sao chép tệp tham chiếu đó ra và đặt nó vào một vị trí được chia sẻ để chúng tôi có thể tham khảo nó qua.\ SharedSchemas \ master.dacpac. Điều đó có thể được giải quyết ngay bây giờ, nhưng là một vấn đề trong bản phát hành đầu tiên. –

+0

Peter Schott có một điểm ở đây. Nó thường là một ý tưởng tốt để sao chép các tập tin dacpac tham chiếu một nơi nào đó bên trong giải pháp và sử dụng từ đó. –

+1

Đối với tôi nó nói "Một tham chiếu đến cơ sở dữ liệu hệ thống này đã tồn tại trong dự án của bạn." Tôi bị kẹt ngay bây giờ! – orad

1

những gì Sam nói là cách tốt nhất để thực hiện việc này.
Tuy nhiên, nếu bạn có một kịch bản mà bạn cần triển khai dacpac từ một máy không có tham chiếu đó ở vị trí cụ thể đó, bạn có thể gặp rắc rối. Một cách khác là mở tệp .project của bạn và đảm bảo thẻ sau có giá trị false cho cấu hình xây dựng bạn đang cố gắng chạy.

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors> 

Bằng cách này bạn không cần thêm tham chiếu vào dự án của mình.

+8

Đây phải là phương sách cuối cùng, vì bạn bị mất phản hồi về lỗi sql! – Jowen

0

Trong dự án của chúng tôi, chúng tôi đã có một tham chiếu đến chính, nhưng chúng tôi đã có vấn đề này. Dưới đây là các lỗi chúng tôi đã nhận:

SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1]. 

Để giải quyết các lỗi tham khảo, trên các tập tin bảng sql, nhấn chuột phải tài sản và xác minh BuildSettings được thiết lập để xây dựng.

Thay đổi nó đã sửa nó.

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