Почему sys.objects не доступны в качестве объектов и какие схемы по умолчанию ищут объекты в SQL Server? - PullRequest
0 голосов

После прочтения INFORMATION_SCHEMA vs sysobjects я хотел задать вопрос:

SQL Server 2005/2008 - Почему представление sys.sysobjects доступно пользователям без схемыимя?
, которое, кажется, уже задано, но я не нахожу, что ответы ответили на вопрос (спросили).

Почему sysbjects доступны как sys.sysobjects, если схема sys не существовала в более ранних версиях SQL Server?
(объяснение состояло в том, что она предназначена для обратной совместимости с более ранними версиями SQL Server)

Затем ответ Барри :

SQL Server ищет объекты в следующем порядке:

  1. sys schema
  2. схема пользователя (Это отличается для хранимых проксов - она ​​будет выглядеть не в схеме пользователя, а в схеме закрашенных проксов.
  3. схема dbo

осталось в ожиданииВопрос от Шона в комментариях:
Почему sys.objects не запрашивается без pefix "sys." (как объекты)?

Какие схемы по умолчанию ищутся в SQL Server и в каком порядке?

1 Ответ

1 голос
/ 08 декабря 2010

Поиск схемы по умолчанию пользователя, а затем поиск схемы dbo.Схема sys никогда не ищется, если она не указана явно (например, sys.objects).

Однако для представлений обратной совместимости (например, sysobjects) существует некоторая специальная логика - схема, даже если она указана, игнорируетсяи используется представление из схемы sys.Поскольку старый код никогда не будет создавать таблицу с именем "dbo.sysobjects", это не проблема, поскольку эти представления представлены для обратной совместимости и не должны использоваться для какой-либо дальнейшей разработки.

Развлечения и игры с sysobjects:

create table dbo.sysobjects (
    ID int not null
)
go
select * from dbo.sysobjects
go

(Для тех, кто не хочет его запускать, вы по-прежнему получаете полный вывод sysobjects, а не пустую таблицу с одним столбцом).

...