Неразрешенная ссылка на объект [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 вместо этого представления, но мне также было дано такое же предупреждение для этого представления.

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

Ответ 1

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

  • В рамках проекта щелкните правой кнопкой мыши ссылку.
  • Выберите Добавить ссылку базы данных....
  • Выберите системную базу данных.
  • Убедитесь, что выбран мастер.
  • Нажмите OK.

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

Ответ 2

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

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

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

Ответ 3

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

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

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

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