SQL Server数据库“默认”表


8

当我将新数据库添加到我们的开发服务器(使用SSMS)时,它将自动创建5个表。

这些是另一个数据库中已经存在的应用程序表的副本。

我假设这是SQL Server的一些最新功能,我不知道在哪里可以将表标记为“公共”或类似的标记,因此可以自动将其添加到新数据库中。

但是我怎样才能阻止它的发生呢?

为避免混淆,该数据库未编写脚本,而是直接从SSMS GUI创建的(右键单击“数据库”>“新建数据库”)

(从StackOverflow移动)


4
从系统数据库中检出模型数据库。它也包含表格吗?
vonPryz

是的,相同的表格-我认为是原因所在?
CompanyDroneFromSector7G

是的,model是“模型”数据库,用作创建的每个下一个数据库的源。
Marcin S.

哇,我从不知道(仅从6.3版开始才使用SQL Server)
CompanyDroneFromSector7G 2016年

不过,至少从SQL Server 2005(可能更早)开始,该功能就已经存在。
Andriy M

Answers:


15

发生这种情况(基于注释中的讨论)是因为表存在于model系统数据库中。根据文档(我的重点):

如果修改模型数据库,则以后创建的所有数据库都将继承这些更改。例如,您可以设置权限或数据库选项,或添加对象,例如表,函数或存储过程。模型数据库的文件属性是一个例外,将被忽略,但数据文件的初始大小除外。

作为解决方案,删除表model将停止此现象。


值得补充的是,有一些例外,例如TempDB 服务器重新启动后的重新创建。在这种情况下,请TempDB使用所有自己的文件属性,包括数据文件的初始大小。
Marcin S.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.