[INFORMATION_SCHEMA] nesnesine çözümlenmemiş başvuru. [TABLOLAR]


100

[INFORMATION_SCHEMA].[TABLES]Görünüme erişen bir UDF oluşturdum :

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

Visual Studio içinde, görünümün şeması ve adı bir uyarı ile işaretlenmiştir:

SQL71502: İşlev: [dbo]. [CountTables] nesnesine [INFORMATION_SCHEMA]. [TABLOLAR] çözümlenmemiş bir referansı var.

Hala veritabanı projesini sorunsuz bir şekilde yayınlayabilirim ve UDF düzgün çalışıyor gibi görünüyor. IntelliSense, görünümün adını benim için dolduruyor, bu nedenle onunla bir sorunu yok gibi görünüyor.

Ben de sys.objectsbu görünüm yerine kullanmak için uygulamayı değiştirmeyi denedim , ancak bu görüş için de aynı uyarıyı aldım.

Bu uyarıyı nasıl çözebilirim?

Yanıtlar:


182

Aşağıdakilere bir veritabanı referansı ekleyin master:

  1. Proje altında Referanslar'a sağ tıklayın .
  2. Veritabanı referansı ekle ... öğesini seçin .
  3. Sistem veritabanı'nı seçin .
  4. Master'ın seçildiğinden emin olun .
  5. Tamam'a basın .

VS'nin güncellenmesinin biraz zaman alabileceğini unutmayın.


6
Ve sadece bir uyarı - eğer herhangi biri bu SSDT'yi farklı bir yola taktıysa , sorunlarınız olabilir . Bazılarının E: sürücüsünün ve diğerlerinin sadece C: sürücüsünün olduğu son projemizde bununla karşılaştık. Bu referans dosyasını kopyaladık ve. \ SharedSchemas \ master.dacpac yoluyla başvurabilmemiz için paylaşılan bir konuma koyduk. Bu muhtemelen şimdi çözüldü, ancak ilk sürümde bir sorundu.
Peter Schott

Peter Schott'un burada bir anlamı var. Başvurulan dacpac dosyalarını çözümün içinde bir yere kopyalayıp oradan kullanmak genellikle iyi bir fikirdir.
Veysel Özdemir

1
Benim için "Bu sistem veritabanına bir referans projenizde zaten var" diyor. Şimdi sıkıştım!
orad

1
Sırf bir sonraki kişinin biraz akıl sağlığını kurtarması için - ister inanın ister inanmayın, VS'den çıkmak bile bunu devam ettirmek için yeterli değildi - yeniden başlatmam gerekti ve sonra ayar çalışmaya başladı. Ayrıca, Visual Studio Seçenekleri ... SQL Server Araçları ... Çevrimiçi Düzenleme ... 'yi açmak isteyebilirsiniz. "Sistem görünümlerine ve ana veritabanı nesnelerine yönelik başvuruları çöz" seçeneğini etkinleştirin.
NYCdotNet

Visual Studio 2017 altında aynı sorunu yaşıyorum ve referans listesinin altında "DataBase referansı" görmüyorum
Scarl

3

Sam'in söylediği, bunu yapmanın en iyi yolu.
Bununla birlikte, dacpac'i o belirli konumda bu referansa sahip olmayan bir makineden dağıtmanız gereken bir senaryonuz varsa, başınız belaya girebilir. Başka bir yol da .project dosyanızı açmak ve aşağıdaki etiketin falseçalıştırmaya çalıştığınız yapı yapılandırması için değerine sahip olduğundan emin olmaktır .

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

Bu şekilde projenize referans eklemenize gerek kalmaz.


13
Bu son çare olmalı, çünkü sql hatalarıyla ilgili geri bildirimleri kaybedersiniz!
Jowen

3

Bizim projemizde zaten usta referansımız var ama bu sorunumuz vardı. İşte aldığımız hata:

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

Referans hatasını çözmek için tablo sql dosyasında özellikleri sağ tıklayın ve BuildSettings'in Build olarak ayarlandığını doğrulayın.

Değiştirmek onu düzeltti.


VS 2019'da, aslında 2017'de oluşturulmuş bir veritabanı projesinde bu sorunu yaşadım. Düzeltmek için, "ana" referansını kaldırıp yeniden eklemem gerekiyordu
Alan Hadsell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.