概述在之前的文章中,我们介绍了SQLServer系统库master、resource、msdb。今天我们将讨论另一种系统数据库——模型数据库的一些特性。顾名思义,模型数据库用作在SQLServer实例中创建新数据库的模型。这意味着当我们创建一个新数据库时,这个新数据库是通过复制模型数据库而形成的。Feature1.新数据库文件的初始大小继承自model数据库。新数据库的初始数据库文件大小和自动增长选项与模型数据库相同。让我们用一个例子来探索它。在SQLServerManagementStudio(SSMS)中,我们右键单击模型数据库并选择属性。在“文件”页面,我们可以看到模型数据库文件的相关信息。我们现在将更改数据和日志文件的大小以及自动增长选项,然后单击“确定”。之后,如果我们打开NewDatabase创建窗口,我们可以看到默认的文件大小和自动增长选项与为model数据库设置的相同。因此,新的数据库文件将默认使用模型数据库中的大小和自动增长选项。2、新建数据库的恢复模型与model数据库相同。新数据库的恢复模型也继承自模型数据库。在下面的示例中,我们可以看到模型数据库处于完整恢复模式:我们将恢复模式从Full更改为Bulk-logged。此外,我们将更改兼容性级别和自动收缩选项。然后我们单击确定以保存这些更改。之后,如果我们打开新数据库创建窗口,我们可以看到所有这些更改都应用于新数据库。因此,正如我们所见,当创建新数据库时,数据库恢复模型和其他数据库选项将从模型数据库中复制。3.在模型数据库中创建的数据库对象将存在于新创建的数据库中如果我们在模型数据库中创建数据库对象,这些对象将出现在该实例的任何新数据库中。模型数据库的这一特性可用于为新数据库创建预定义模板。例如,如果您需要在所有新数据库中包含一些特殊对象,您可以将这些对象添加到模型数据库中,而不是每次创建新数据库时都创建它们。在这些情况下,建议对模型数据库进行备份,以便在数据库出现问题时可以恢复模型数据库的修改版本。4.model数据库中创建的对象也出现在tempDB中新数据库不仅继承了model数据库中创建的对象,而且这些对象在创建时也存在于TempDB中。首先,我们可以看到我们实例中的TempDB中没有用户自定义表和存储过程。由于我们已将表和存储过程添加到模型数据库,让我们重新启动实例。重启后,我们可以在TablesandStoredProcedures下看到model数据库中定义的对象。这是因为每次启动SQLServer实例时都会重新创建TempDB数据库。所以,作为一个新创建的数据库,它继承了model数据库中创建的对象。5.模型数据库必须始终存在于SQLServer上。如果模型数据库不可用,则无法启动SQLServer实例。这是因为当一个实例启动时,它会重新创建TempDB数据库,而模型数据库是发生这种情况所必需的。让我们重现这种情况。我们停止SQLServer并将模型数据库数据文件移动到另一个位置。然后,如果我们尝试启动实例,我们将收到以下错误消息。如果我们查看ERRORLOG文件,我们可以看到SQLServer启动失败,因为模型数据库不可用。因此,每个SQLServer实例都需要一个模型数据库。结论综上所述,模型数据库用作在实例中创建新数据库的模板。这意味着实例中新创建的数据库继承模型数据库的选项、恢复模型、初始数据文件大小等。数据库对象,例如表,也可以在模型数据库中创建,这些对象将出现在任何新创建的数据库中在实例中。TempDB数据库也继承了model数据库的一些设置,所以model数据库必须存在才能启动SQLServer。
