创建新数据库时会添加额外的表

Rya*_*ins 2 sql-server

这真是一个很奇怪的问题。当我从脚本创建新数据库时,我添加了额外的表。这些不是系统类型表,而是看起来像是来自过去项目的常规表。其中有 3 个,每个有 2 列,要么是 ints 要么是 nchar(10),没有键、约束、触发器或索引。

我不知道这是从哪里来的,也不知道我该如何解决。现在我只是删除了表格,但这有点烦人,我想解决这个问题。

这是我编写的重现错误的脚本:

CREATE DATABASE X;
GO

USE X;
GO

CREATE TABLE Y(
  YId INT IDENTITY CONSTRAINT pk_yid PRIMARY KEY(YId));
GO

CREATE TABLE Z(
  ZId INT IDENTITY CONSTRAINT pk_zid PRIMARY KEY(ZId));
GO
Run Code Online (Sandbox Code Playgroud)

运行此脚本后,我的数据库已创建,但它有 5 个表而不是 2 个。

运行SELECT * FROM INFORMATION_SCHEMA.TABLES只是将我的额外表列为 BASE TABLE,与我定义的完全相同(所有其他列也相同)。

这发生在 SQL Server 2008 R2 (Microsoft SQL Server Management Studio 10.50.2500.0) 上

Mar*_*ith 8

有人向模型数据库中添加了表。

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

如果修改模型数据库,之后创建的所有数据库都将继承这些更改。例如,您可以设置权限或数据库选项,或者添加表、函数或存储过程等对象。


Rob*_*ley 7

新数据库是模型数据库的副本。如果它们在模型中,它们将出现在您创建的每个新数据库中。