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