让我们假设我在单个 SQL Server 数据库中有下表。
mySchema.Users
mySchema.Products
--
secondSchema.Users
secondSchema.Contracts
secondSchema.ContractItems
--
oldSchema.People
oldSchema.Table1
oldSchema.Table2
oldSchema.Table3
oldSchema.Table4
--
and so on and so forth
每个“模式”都完全独立于其他“模式”。它们位于单个数据库中的唯一原因是托管和成本限制。在一个完美的世界中,这些本来应该在单独的数据库中。
当(如果有的话)我需要将 secondSchema 移动到一个新的数据库中时,我需要做什么,因为它的使用率上升,现在需要放在它自己的数据库中。
我已经查看了关于何时使用非 dbo 架构与新数据库的决策标准,正如我上面所说的,它们在同一个数据库中没有关系或事务的理由。出于成本原因,他们在那里。
您可以编写出数据库的那部分脚本,然后
CREATE DATABASE
使用脚本化的模式和原始数据库中的数据运行。当您生成脚本...时,您将能够选择特定对象而不是整个数据库。您可以选择所需的模式,以及该模式拥有的所有对象。这将生成一个包含您的架构和架构对象的脚本。有点手动操作,但可能是最简单的方法。
在生成的脚本中,您可以将模式名称更改为新数据库模式应调用的名称,但要意识到对象定义也需要反映新模式的名称。