Почему системные представления дублируются в пользовательских базах данных? - PullRequest
1 голос

Почему SQL Server дублирует сотню системных представлений из базы данных модели в каждую пользовательскую базу данных вместо того, чтобы сохранять их централизованными (например, как объекты сервера) и использовать их в определенном контексте конкретной базы данных при запросе /нужно?

Не являются ли они (например, определения / сценарий системного представления) общими для баз данных?


Обновление:

Я все еще не смог получить его:
1)
Для выполнения представления в контексте другой базы данных нет необходимости копировать представлениеопределения в каждую базу данных (просто извлеките представление def и выполните в контексте конкретной базы данных).
Итак, зачем умножать копии?
2)
Тогда я все еще не понимаю, что где хранится?

[1] (BOL2005 [1a] -2008R2 [1b]) сообщает, что:

"В SQL Server системные объекты больше не хранятся в базе данных master; вместо этого они хранятся в базе данных ресурсов"

Кроме того, я хотел бы понять, почему SSMS разрешает создание сценариев объектов сервера (например, щелкните правой кнопкой мыши в обозревателе объектов в разделе СерверObjects -> Trigger на syspolicy_server_trigger -> Script Server Trigger as ...--->), в то время как, например, системные представления не имеют такой возможности.

Что отличает их?Где они хранятся?


Цитируется:
[1] основная база данных
[1a]
(Электронная документация по SQL Server 2008 R2)
http://msdn.microsoft.com/en-us/library/ms187837.aspx
[1b]
(Электронная документация по SQL Server 2005)
http://msdn.microsoft.com/en-us/library/ms187837(v=SQL.90).aspx

1 Ответ

3 голосов
/ 02 октября 2010

Они не дублируются.

  • sys.objects и sys.database_principals хранятся, потому что они специфичны для базы данных
  • sys.server_triggers или sys.server_permissions существуют только на уровне сервера в master db

SQL Server правильно разрешает схему sys в базе данных или на сервере:

USE MyDB
GO
SELECT * FROM sys.server_permissions   --   <. always from master db 

Это - это , что так просто и бесполезно на практическом повседневном уровне ...

Редактировать: после комментария Мартина Смита из MSDN

...