Неразрешенная ссылка на объект [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
:
- Под проектом щелкните правой кнопкой мыши References.
- Выберите Добавить ссылку на базу данных....
- Выберите Системная база данных.
- Убедитесь, что мастер выбран.
- Нажмите ОК
Обратите внимание, что обновление 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, и даже после добавления ссылки на основную базу данных по-прежнему возникает эта проблема. Решили эту проблему, изменив целевую платформу проекта БД, как показано на изображении ниже. После этого изменения мне пришлось удалить и снова добавить главную базу данных.