referensi yang belum terselesaikan untuk objek [INFORMATION_SCHEMA]. [TABLES]

99

Saya telah membuat UDF yang mengakses [INFORMATION_SCHEMA].[TABLES]tampilan:

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

Dalam Visual Studio, skema dan nama tampilan keduanya ditandai dengan peringatan:

SQL71502: Fungsi: [dbo]. [Tabel Hitung] memiliki referensi yang belum terselesaikan ke objek [INFORMATION_SCHEMA]. [TABLES].

Saya masih dapat mempublikasikan proyek database tanpa masalah, dan UDF tampaknya berjalan dengan benar. IntelliSense mengisi nama tampilan untuk saya, jadi sepertinya tidak ada masalah dengannya.

Saya juga mencoba mengubah implementasi untuk digunakan sys.objectsalih-alih tampilan ini, tetapi saya juga diberi peringatan yang sama untuk tampilan ini.

Bagaimana cara mengatasi peringatan ini?

Sam
sumber

Jawaban:

180

Tambahkan referensi database ke master:

  1. Di bawah proyek, klik kanan Referensi .
  2. Pilih referensi Tambah basis data ... .
  3. Pilih Database sistem .
  4. Pastikan master dipilih.
  5. Tekan OK .

Perhatikan bahwa VS mungkin memerlukan beberapa saat untuk memperbarui.

Sam
sumber
6
Dan hanya peringatan - jika ada yang menginstal SSDT tersebut di jalur yang berbeda, Anda mungkin mengalami masalah. Kami menemukan itu di proyek terakhir kami di mana beberapa memiliki drive E: dan yang lainnya hanya drive C :. Kami menyalin file referensi tersebut dan meletakkannya di lokasi bersama sehingga kami dapat merujuknya melalui. \ SharedSchemas \ master.dacpac. Itu mungkin terselesaikan sekarang, tetapi menjadi masalah pada rilis pertama.
Peter Schott
Peter Schott ada benarnya di sini. Biasanya merupakan ide yang baik untuk menyalin file dacpac yang direferensikan di suatu tempat di dalam solusi dan menggunakannya dari sana.
Veysel Ozdemir
1
Bagi saya itu mengatakan "Referensi ke database sistem ini sudah ada di proyek Anda." Saya terjebak sekarang!
orad
1
Hanya untuk orang berikutnya untuk menyelamatkan kewarasan - percaya atau bahkan tidak berhenti VS tidak cukup untuk membuat ini melekat - saya harus reboot dan kemudian pengaturan mulai bekerja. Anda mungkin juga ingin membuka Opsi Visual Studio ... Alat SQL Server ... Pengeditan Online ... mengaktifkan "Selesaikan referensi ke tampilan sistem dan objek database master".
NYCdotNet
Saya mengalami masalah yang sama di bawah Visual Studio 2017 dan saya tidak melihat "referensi DataBase" di bawah daftar referensi
Scarl
3

Dalam proyek kami, kami sudah memiliki referensi ke master, tetapi kami mengalami masalah ini. Inilah kesalahan yang kami dapatkan:

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

Untuk mengatasi kesalahan referensi, pada file sql tabel, klik kanan properti dan verifikasi BuildSettings diatur ke Build.

Mengubahnya membangun memperbaikinya.

Russell D
sumber
Di VS 2019, saya mengalami masalah ini dengan proyek database yang awalnya dibuat pada tahun 2017. Untuk memperbaikinya, saya harus menghapus dan menambahkan kembali referensi ke "master"
Alan Hadsell
2

apa yang Sam katakan adalah cara terbaik untuk melakukan ini.
Namun, jika Anda memiliki skenario bahwa Anda perlu menyebarkan dacpac dari mesin yang tidak memiliki referensi tersebut di lokasi tertentu, Anda mungkin mendapat masalah. Cara lain adalah dengan membuka file .project Anda dan memastikan tag berikut memiliki nilai falseuntuk konfigurasi build yang Anda coba jalankan.

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

Dengan cara ini Anda tidak perlu menambahkan referensi ke proyek Anda.

tecfield
sumber
13
Ini harus menjadi pilihan terakhir, karena Anda kehilangan umpan balik tentang kesalahan sql!
Jowen