การอ้างอิงถึงออบเจ็กต์ที่ไม่ได้รับการแก้ไข [INFORMATION_SCHEMA] [TABLES]


101

ฉันได้สร้าง UDF ที่เข้าถึง[INFORMATION_SCHEMA].[TABLES]มุมมอง:

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

ภายใน Visual Studio ทั้งสคีมาและชื่อสำหรับมุมมองจะมีคำเตือน:

SQL71502: ฟังก์ชัน: [dbo] [CountTables] มีการอ้างอิงที่ยังไม่ได้แก้ไขไปยังอ็อบเจ็กต์ [INFORMATION_SCHEMA] [TABLES]

ฉันยังสามารถเผยแพร่โครงการฐานข้อมูลได้โดยไม่มีปัญหาใด ๆ และดูเหมือนว่า UDF จะทำงานได้อย่างถูกต้อง IntelliSense เติมชื่อของมุมมองให้ฉันดูเหมือนจะไม่มีปัญหากับมัน

ฉันยังได้ลองเปลี่ยนการนำไปใช้งานsys.objectsแทนมุมมองนี้ แต่ฉันก็ได้รับคำเตือนแบบเดียวกันสำหรับมุมมองนี้เช่นกัน

ฉันจะแก้ไขคำเตือนนี้ได้อย่างไร

คำตอบ:


183

เพิ่มการอ้างอิงฐานข้อมูลไปที่master:

  1. ภายใต้โครงการคลิกขวาอ้างอิง
  2. เลือกการอ้างอิงฐานข้อมูลเพิ่ม ...
  3. เลือกระบบฐานข้อมูล
  4. ตรวจสอบให้แน่ใจว่าได้เลือกต้นแบบแล้ว
  5. กดตกลง

โปรดทราบว่าอาจใช้เวลาสักครู่ในการอัปเดต VS


6
และเป็นเพียงคำเตือน - หากใครก็ตามที่ติดตั้ง SSDT ในเส้นทางอื่นคุณอาจมีปัญหา เราพบว่าในโครงการสุดท้ายของเราที่บางคนมีไดรฟ์ E: และอื่น ๆ เป็นเพียงไดรฟ์ C: เราคัดลอกไฟล์อ้างอิงนั้นออกและวางไว้ในตำแหน่งที่แชร์เพื่อให้เราสามารถอ้างอิงผ่าน. \ SharedSchemas \ master.dacpac ซึ่งอาจได้รับการแก้ไขแล้ว แต่เป็นปัญหาในรุ่นแรก
Peter Schott

Peter Schott มีจุดที่นี่ โดยทั่วไปเป็นความคิดที่ดีที่จะคัดลอกไฟล์ dacpac ที่อ้างอิงไว้ที่ใดที่หนึ่งในโซลูชันและใช้จากที่นั่น
Veysel Ozdemir

1
สำหรับฉันมีข้อความว่า "มีการอ้างอิงถึงฐานข้อมูลระบบนี้ในโครงการของคุณแล้ว" ฉันติดอยู่แล้ว!
orad

1
เพียงเพื่อให้คนต่อไปรักษาความมีสติ - เชื่อหรือไม่แม้แต่การเลิก VS ก็ไม่เพียงพอที่จะทำให้สิ่งนี้ติด - ฉันต้องรีบูตจากนั้นการตั้งค่าก็เริ่มทำงาน คุณอาจต้องการเปิด Visual Studio Options ... SQL Server Tools ... Online Editing ... เปิดใช้งาน "แก้ไขการอ้างอิงถึงมุมมองระบบและอ็อบเจ็กต์ฐานข้อมูลหลัก"
NYCdotNet

ฉันประสบปัญหาเดียวกันใน Visual Studio 2017 และฉันไม่เห็น "ข้อมูลอ้างอิงฐานข้อมูล" ในรายการอ้างอิง
Scarl

3

สิ่งที่แซมพูดคือวิธีที่ดีที่สุดในการทำสิ่งนี้
อย่างไรก็ตามหากคุณมีสถานการณ์ที่คุณต้องปรับใช้ dacpac จากเครื่องที่ไม่มีข้อมูลอ้างอิงนั้นในตำแหน่งเฉพาะนั้นคุณอาจประสบปัญหา อีกวิธีหนึ่งคือเปิดไฟล์. project ของคุณและตรวจสอบให้แน่ใจว่าแท็กต่อไปนี้มีค่าfalseสำหรับการกำหนดค่าบิลด์ที่คุณพยายามเรียกใช้

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

ด้วยวิธีนี้คุณไม่จำเป็นต้องเพิ่มข้อมูลอ้างอิงให้กับโครงการของคุณ


13
นี่ควรเป็นทางเลือกสุดท้ายเนื่องจากคุณสูญเสียข้อเสนอแนะเกี่ยวกับข้อผิดพลาด sql!
Jowen

3

ในโครงการของเราเรามีข้อมูลอ้างอิงถึงอาจารย์อยู่แล้ว แต่เรามีปัญหานี้ นี่คือข้อผิดพลาดที่เราได้รับ:

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

ในการแก้ไขข้อผิดพลาดในการอ้างอิงบนไฟล์ตาราง sql ให้คลิกขวาที่คุณสมบัติและตรวจสอบว่า BuildSettings ถูกตั้งค่าเป็น Build

การเปลี่ยนแปลงโครงสร้างแก้ไขได้


ใน VS 2019 ฉันมีปัญหากับโปรเจ็กต์ฐานข้อมูลซึ่งเดิมสร้างขึ้นในปี 2017 ในการแก้ไขฉันต้องลบและเพิ่มการอ้างอิงถึง "master" อีกครั้ง
Alan Hadsell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.