【发布时间】:2010-10-02 10:51:30
【问题描述】:
为什么 SQL Server 要将模型数据库中的一百个系统视图复制到每个用户定义的数据库中,而不是让它们保持集中(例如,因为它保持服务器对象)并在被询问时在特定数据库的特定上下文中使用它们/需要吗?
它们(例如,系统视图的定义/脚本)在数据库之间不是通用的吗?
更新:
我还是没弄明白:
1)
为了在另一个数据库的上下文中执行视图,无需将视图定义复制到每个数据库中(只需提取视图定义并在特定数据库的上下文中执行)。
那么,为什么要复制副本呢?
2)
那么,我还是很困惑什么存储在哪里?
[1] (BOL2005[1a]-2008R2[1b]) 告诉我们:
“在 SQL Server 中,系统对象不再存储在主数据库中;而是存储在资源数据库中”
另外,我想了解为什么 SSMS 允许编写服务器对象脚本(例如,在服务器对象下的对象资源管理器中单击鼠标右键 --> syspolicy_server_trigger 上的触发器 --> 将服务器触发器脚本编写为 ...--- > ) 而,例如,系统视图没有这种可能性。
是什么让它们与众不同?它们分别存储在哪里?
引用:
[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
【问题讨论】:
标签: sql-server architecture configuration terminology code-reuse