tham chiếu chưa được giải quyết đến đối tượng [INFORMATION_SCHEMA]. [TABLES]


99

Tôi đã tạo một UDF truy cập [INFORMATION_SCHEMA].[TABLES]chế độ xem:

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, cả lược đồ và tên cho dạng xem đều được đánh dấu bằng cảnh báo:

SQL71502: Hàm: [dbo]. [CountTables] có một tham chiếu chưa được giải quyết tới đố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 chính xác. IntelliSense điền tên của chế độ xem 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.objectsthay vì chế độ xem này, nhưng tôi cũng nhận được cảnh báo tương tự cho chế độ xem này.

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

Câu trả lời:


180

Thêm tham chiếu cơ sở dữ liệu vào master:

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

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


6
Và chỉ là một cảnh báo - nếu ai đó đã cài đặt những SSDT đó trong một đường dẫn khác, bạn có thể gặp sự cố. Chúng tôi đã gặp phải điều đó trong dự án cuối cùng của mình, nơi một số có ổ E: và những người khác chỉ có ổ C:. Chúng tôi đã sao chép tệp tham chiếu đó ra và đặt ở vị trí được chia sẻ để chúng tôi có thể tham khảo 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.
Peter Schott

Peter Schott có một điểm ở đây. Nói chung, bạn nên sao chép các tệp dacpac được tham chiếu ở đâu đó bên trong giải pháp và sử dụng từ đó.
Veysel Ozdemir

1
Đối với tôi, nó nói rằng "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 đang mắc kẹt bây giờ!
orad

1
Chỉ để người tiếp theo tiết kiệm sự tỉnh táo - tin hay không bỏ VS là không đủ để điều này tiếp tục - tôi phải khởi động lại và sau đó cài đặt bắt đầu hoạt động. Bạn cũng có thể muốn mở Tùy chọn Visual Studio ... Công cụ máy chủ SQL ... Chỉnh sửa trực tuyến ... bật "Giải quyết tham chiếu đến dạng xem hệ thống và đối tượng cơ sở dữ liệu chính".
NYCdotNet

Tôi đang gặp sự cố tương tự trong Visual Studio 2017 và tôi không thấy "Tham chiếu DataBase" trong danh sách tham chiếu
Scarl

3

Trong dự án của chúng tôi, chúng tôi đã có tài liệu tham khảo để làm chủ, nhưng chúng tôi đã gặp vấn đề này. Đây là lỗi chúng tôi mắc phải:

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

Để giải quyết lỗi tham chiếu, trên tệp sql bảng, nhấp chuột phải vào thuộc tính và xác minh BuildSettings được đặt thành Build.

Thay đổi nó xây dựng đã sửa nó.


2

những gì Sam nói là cách tốt nhất để làm điều này.
Tuy nhiên, nếu bạn gặp tình huống 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 rằng thẻ sau có giá trị falsecho cấu hình bản dựng mà 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.


13
Đây nên là phương sách cuối cùng, vì bạn sẽ mất phản hồi về lỗi sql!
Jowen
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.