在SQL Server 2008中创建新数据库时,FILEGROWTH设置是否应从模型数据库继承?

时间:2011-09-05 11:03:43

标签: sql-server database sql-server-2008

在SQL Server中,“模型”数据库显然在创建新数据库时充当一种模板。看起来这个数据库的某些属性似乎是由新数据库继承的。但是,我观察到新数据库不会继承FILEGROWTH属性。

这篇(有些陈旧)的帖子暗示这应该是遗传的:

  

要更改将来数据库的默认设置,请进行更改   在模型数据库上。

http://weblogs.sqlteam.com/tarad/archive/2008/09/11/File-Growth-Settings-for-SQL-Server-Databases.aspx

然而,在这篇文章中,有人基本上提出了类似的问题: http://www.sqlservercentral.com/Forums/Topic1065073-391-1.aspx

所以我的问题是模型数据库的FILEGROWTH属性应该如何影响新数据库;并在SQL Server版本之间更改此行为?

1 个答案:

答案 0 :(得分:1)

CREATE DATABASE的文档可以说明SIZE参数:

  

如果未为主文件提供大小,则数据库引擎会使用模型数据库中主文件的大小。如果指定了辅助数据文件或日志文件但未为文件指定大小,则数据库引擎会将文件设置为1 MB。为主文件指定的大小必须至少与model数据库的主文件一样大。

然而,对于FILEGROWTH参数,它说:

  

如果未指定FILEGROWTH,则数据文件的默认值为1 MB,日志文件的默认值为10%,最小值为64 KB。


SQL Server 2000 CREATE DATABASE的文档也与来自模型的文档一致:

  

如果未指定FILEGROWTH,则默认值为10%,最小值为64 KB


原始答案:

通过阅读model database上的MSDN页面,您可以推断答案为否,这不是继承的。首先,我们有:

  

发出CREATE DATABASE语句时,通过复制model数据库的内容来创建数据库的第一部分。然后,新数据库的其余部分将填充空页。

这意味着在使用 model 之前,新数据库的数据库文件已经存在。也:

  

无法在model数据库上执行以下操作:

     
      
  • 添加文件或文件组。
  •   

如果通过完全复制磁盘上的文件结构来创建新数据库,然后克隆数据库中的sys.database_files行,则不需要此限制。