将dbo复制到MSSQL中的新架构

时间:2017-11-24 13:11:27

标签: sql-server azure-sql-database database-schema

我在SQL中有一个数据库,其中所有内容都在dbo架构中。现在我们要复制该模式,使两个模式在同一个数据库中具有完全相同的内容。有没有简单的方法在Azure数据库中执行此操作?

(我们想要分开我们的开发和UAT,但仍然只使用一个数据库)

2 个答案:

答案 0 :(得分:1)

虽然这里发布的另一个答案是使用SSIS来传输SQL对象,但我觉得有必要指出你的方法引发了很多其他问题。

在两个环境中使用单个数据库不是一个好习惯。第一个大问题是如何处理部署?假设UAT位于uat模式中,开发中的开发是dev模式。您对Customers表进行了更改,如何将表更改部署到两个模式?如果使用SSIS,则需要一个内部部署的SSIS服务器,该服务器处理将更改复制到目标数据库中的各种shcema。这将造成很大的维护问题,并可能导致重大变化被消除。

这会导致您的应用程序如何定位特定架构?您可以在运行时将登录默认为特定架构,但许多ORM工具会提前想要架构。这将强制以可能强制将不同代码部署到不同环境的方式编写代码。这开启了部分代码在生产之前不会进行测试的可能性。

我最后一个问题是使用这种方法,对数据库进行版本控制变得困难,而且许多工具都不支持你正在做的事情。这意味着您可能会创建自定义流程和工具来部署数据库,而不是利用Microsoft或Red Gate等供应商构建的工具。这使您不仅需要支持为客户提供的应用程序,还需要支持完成工作的应用程序(基本上可以使工作量增加一倍)。

我的建议是考虑在单个数据库中运行两个环境的必要性。我假设这可能是由于成本,在这种情况下你可能会发现这是错误的。 Azure有许多定价层,以支持具有各种预算的客户。根据两种环境的应用程序工作负载,您可能会发现需要一个大型DTU数据库来支持这两种环境。您可能会发现,通过拥有两个数据库,您可以利用较小的DTU层,这可能最终会更便宜。

答案 1 :(得分:0)

请按照here中的解释,使用SSIS中的传输SQL Server对象任务的CopySchema选项。