неразрешенная ссылка на объект [информационная схема].[ТАБЛИЦЫ]
Я создал UDF, который обращается к [INFORMATION_SCHEMA].[TABLES]
view:
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].[ТАБЛИЦЫ.]
Я все еще могу опубликовать проект базы данных без каких-либо проблем, и UDF, похоже, работает правильно. IntelliSense заполняет имя представления для меня, так что, похоже, у него нет проблем с этим.
Я также попытался изменить, чтобы использовать sys.objects
вместо этого представления, но мне было дано такое же предупреждение и для этого представления.
как я могу решить это предупреждение?
3 ответа:
добавить ссылку на базу данных в
master
:
- в рамках проекта, щелкните правой кнопкой мыши ссылки.
- выберите добавить ссылку на базу данных....
- выберите базы данных системы.
- обеспечить мастер выбран.
- пресс ОК.
обратите внимание, что для обновления VS может потребоваться некоторое время.
то, что сказал Сэм, это лучший способ сделать это.
Однако если у вас есть сценарий, который необходимо развернуть dacpac с компьютера, который не имеет этой ссылки в этом конкретном месте, вы можете попасть в беду. Другой способ-открыть свой .файл проекта и убедитесь, что следующий тег имеет значениеfalse
для конфигурации сборки, которую вы пытаетесь запустить.<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>
таким образом, вам не нужно добавлять ссылку на ваш проект.
в нашем проекте у нас уже есть ссылка на master, но у нас была эта проблема. Вот ошибка, которую мы получили:
SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1].
чтобы устранить ошибку ссылки, в файле sql таблицы, щелкните правой кнопкой мыши Свойства и убедитесь, что BuildSettings настроены на сборку.
изменение его сборки исправлено.