INFORMATION_SCHEMA против системных объектов - PullRequest
21 голосов
/ 08 декабря 2010

В SQL Server:

В чем разница между INFORMATION_SCHEMA и sysobjects?Один из них предоставляет больше информации, чем другой, или они обычно используются для разных вещей?

Являются ли sysobjects такими же, как sys.objects?Если нет, то в чем разница между ними?

Ответы [ 2 ]

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

INFORMATION_SCHEMA является частью стандарта SQL-92, поэтому он вряд ли будет меняться почти так же часто, как системные объекты.

Представления предоставляют внутреннее, независимое от системных таблиц представление метаданных SQL Server. Они работают правильно, даже если в базовые системные таблицы были внесены значительные изменения.

Вы всегда гораздо лучше запрашиваете INFORMATION_SCHEMA, потому что он скрывает детали реализации объектов в sysobjects.

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

INFORMATION_SCHEMA - это стандарт ANSI, несколько расширенный в реализации SQL Server.sysobjects является специфическим для SQL Server.Старые версии SQL Server не поддерживали его.

Так что INFORMATION_SCHEMA более переносим (работает с другой базой данных) и несколько проще в использовании, чем системные объекты.Если в нем есть необходимая информация, я бы выбрал INFORMATION_SCHEMA.

sys.objects sysobjects только для переносимости SQL 2000.

...