Неразрешенная ссылка на объект [INFORMATION_SCHEMA].[TABLES]

Я создал 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 вместо этой точки зрения, но я получил то же предупреждение и для этой точки зрения.

Как я могу устранить это предупреждение?

4 ответа

Решение

Добавить ссылку на базу данных в master:

  1. Под проектом щелкните правой кнопкой мыши References.
  2. Выберите Добавить ссылку на базу данных....
  3. Выберите Системная база данных.
  4. Убедитесь, что мастер выбран.
  5. Нажмите ОК

Обратите внимание, что обновление VS может занять некоторое время.

В нашем проекте у нас уже есть ссылка на мастера, но у нас была эта проблема. Вот ошибка, которую мы получили:

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

Чтобы устранить ошибку ссылки, в файле sql таблицы щелкните правой кнопкой мыши свойства и убедитесь, что для BuildSettings установлено значение Build.

Изменение его сборки исправило это.

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

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

Таким образом, вам не нужно добавлять ссылку на ваш проект.

Я использую VS 2019, и даже после добавления ссылки на основную базу данных по-прежнему возникает эта проблема. Решили эту проблему, изменив целевую платформу проекта БД, как показано на изображении ниже. После этого изменения мне пришлось удалить и снова добавить главную базу данных.

Другие вопросы по тегам