1

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

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


Update:

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

[1] (BOL2005 [1a] -2008R2 [1b]) не говорит, что:

«В SQL Server системные объекты больше не хранятся в основной базе данных, вместо этого, они хранятся в . база данных Resource "

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

Что делает их разными? Где они, соответственно, хранятся?


Цитируется:
[1] мастер Database
[1a]
(SQL Server 2008 R2 Books Online)
http://msdn.microsoft.com/en-us/library/ms187837.aspx
[1b]
(SQL Server 2005 Books Online)
http://msdn.microsoft.com/en-us/library/ms187837(v=SQL.90).aspx

ответ

3

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

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

SQL-сервер разрешает SYS схема правильно базы данных или сервера в соответствии с требованиями:

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

это является, что простой и не нужны на практическом повседневном уровне ...

Edit: После того, как комментарий Мартина Смита, from MSDN

+1

На самом деле из 'mssqlsystemresource' вместо' master' я думаю. –

+0

@ Мартин Смит: представления в общедоступном каталоге находятся в главном, внутренние скрытые * таблицы * находятся в mssqlsystemresource, который недоступен. Эффективно его хозяин. В отличие от SQL Server 2000 и до которых действительно были таблицы в master – gbn

+0

Я скопировал mdf для mssqlsystemresource и привязал его как новую базу данных. 'sys.server_permissions' отображается в виде пользователя в этой копии. –

 Смежные вопросы

  • Нет связанных вопросов^_^