невирішене посилання на об’єкт [INFORMATION_SCHEMA]. [ТАБЛИЦІ]


99

Я створив 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замість цієї точки зору, але мені було дано таке ж попередження і для цієї точки зору.

Як я можу вирішити це попередження?

Відповіді:


180

Додайте посилання на базу даних master:

  1. Під проектом клацніть правою кнопкою миші посилання .
  2. Вибір посилання Додати базу даних ... .
  3. Виберіть Системна база даних .
  4. Переконайтеся , що вибрано майстра .
  5. Натисніть OK .

Зверніть увагу, що оновлення VS може зайняти деякий час.


6
І лише попередження - якщо у когось ці SSDT встановлені за іншим шляхом, у вас можуть виникнути проблеми. Ми зіткнулися з цим у нашому останньому проекті, де у одних був диск E:, а у інших просто диск C:. Ми скопіювали цей довідковий файл і розмістили його у спільному розташуванні, щоб ми могли посилатися на нього за допомогою. \ SharedSchemas \ master.dacpac. Це, мабуть, вирішено зараз, але це було проблемою у першому випуску.
Пітер Шотт,

Пітер Шотт тут має справу. Як правило, корисно копіювати файли dacpac, на які посилаються, десь усередині рішення та використовувати звідти.
Вейсел Оздемір

1
Для мене сказано: "Посилання на цю базу даних системи вже існує у вашому проекті". Я зараз застряг!
орад

1
Просто для того, щоб наступна людина врятувала розум - вірити цьому чи навіть не виходити з VS було недостатньо, щоб це закріпилося - мені довелося перезавантажитися, а потім налаштування почало працювати. Можливо, ви також захочете відкрити параметри Visual Studio ... Інструменти SQL Server ... Інтернет-редагування ... увімкніть "Вирішення посилань на системні подання та майстер-об'єкти бази даних".
NYCdotNet

У мене така сама проблема під Visual Studio 2017, і я не бачу "DataBase reference" у списку посилань
Scarl

3

У нашому проекті ми вже маємо посилання на master, але у нас була ця проблема. Ось помилка, яку ми отримали:

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

Щоб усунути помилку посилання, у файлі sql таблиці клацніть правою кнопкою миші властивості та переконайтеся, що BuildSettings встановлено на Build.

Зміна його збірки це виправило.


2

те, що сказав Сем, є найкращим способом зробити це.
Однак, якщо у вас є сценарій, що вам потрібно розгорнути dacpac з машини, яка не має цього посилання у цьому конкретному місці, ви можете зіткнутися з проблемами. Інший спосіб - відкрити файл .project і переконатися, що наступний тег має значення falseдля конфігурації збірки, яку ви намагаєтеся запустити.

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

Таким чином вам не потрібно додавати посилання на ваш проект.


13
Це має бути крайнім засобом, оскільки ви втрачаєте відгук про помилки sql!
Джовен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.