Я подозреваю, что у вас есть две таблицы с одинаковым именем. Один принадлежит схеме 'dbo' ( dbo.PerfDiag
), а другой принадлежит схеме по умолчанию учетной записи, используемой для подключения к SQL Server (что-то вроде userid.PerfDiag
).
Если у вас есть неквалифицированная ссылка на объект схемы (например, таблица), не уточненная именем схемы, ссылка на объект должна быть разрешена. Разрешение имени происходит путем поиска в следующей последовательности объекта соответствующего типа (таблицы) с указанным именем. Имя разрешается до первого совпадения:
- По стандартной схеме пользователя.
- По схеме dbo.
Неквалифицированная ссылка привязана к первому совпадению в указанной выше последовательности.
В качестве общей рекомендуемой практики всегда следует квалифицировать ссылки на объекты схемы из соображений производительности:
Неквалифицированная ссылка может сделать недействительным кэшированный план выполнения для хранимой процедуры или запроса, поскольку схема, к которой была привязана ссылка, может измениться в зависимости от учетных данных, выполняющих хранимую процедуру или запрос. Это приводит к перекомпиляции запроса / хранимой процедуры, что снижает производительность. Перекомпиляция приводит к снятию блокировок компиляции, блокируя доступ других пользователей к необходимым ресурсам.
Разрешение имени замедляет выполнение запроса, так как необходимо выполнить две проверки для определения вероятной версии объекта (принадлежащего dbo). Это обычный случай. Единственный раз, когда один зонд разрешит имя, - это если текущий пользователь владеет объектом указанного имени и типа.
[Отредактировано для дальнейшего примечания]
Другие возможности (в произвольном порядке):
- Вы не подключены к базе данных, о которой думаете.
- Вы не подключены к тому экземпляру SQL Server, который вы думаете.
Дважды проверьте свои строки подключения и убедитесь, что они явно указывают имя экземпляра SQL Server и имя базы данных.