【问题标题】:Create single SQL Server 2008 application database from multiple part application databases从多个部分应用程序数据库创建单个 SQL Server 2008 应用程序数据库
【发布时间】:2014-01-04 16:04:15
【问题描述】:

我有一个应用程序使用多个 SQL Server 2008 数据库(都具有不同的架构 - 按应用程序功能拆分)。

我现在想将这些模式和数据组合成一个整体应用程序数据库 (SQL Server 2008)。我已经搜索了有关如何执行此操作的帮助,但我看到的所有解决方案都涵盖了合并来自具有相同模式的数据库中的数据。在这种情况下,不同数据库的模式没有共同点——所有表都是唯一的。为此,我只想将所有表和数据合并到一个数据库中,我真的在寻找一种工具来帮助我简单轻松地完成它。

任何人都可以就如何最好地实现这一点提供一些指导吗?

【问题讨论】:

  • 首先,预期的结果模式是什么?您可以在逻辑上合并具有相同列的表,但是当您处理不同的表时,如果它们以不同的格式表示相同类型的数据,则必须进行某种转换为固定模式。
  • 对不起,亚历杭德罗,你已经偏离了我见过的所有其他解决方案的道路。在这种情况下,不同数据库的模式没有共同点——所有表都是唯一的。在这种情况下,我只想将所有表和数据合并到一个数据库中,我真的在寻找一种工具来帮助我简单轻松地做到这一点。

标签: sql-server-2008 merge


【解决方案1】:

我猜你可以创建一个类似这样的脚本......在你的源数据库中执行以下语句并选择Results to Text

SELECT N'SELECT * INTO [dbo].['+ TABLE_NAME + N'] FROM  [ServerName].[Database].['
      + TABLE_SCHEMA + N'].[' + TABLE_NAME + N']; ' + CHAR(10) + N'GO' 
FROM information_schema.tables
WHERE TABLE_TYPE = 'BASE TABLE'

它会生成如下脚本。您需要做的就是从结果窗格中复制它并将其粘贴到查询窗口中,目标数据库上下文和工作完成....

SELECT * INTO [dbo].[TestTable] FROM  [ServerName].[Database].[dbo].[TestTable]; 
GO
SELECT * INTO [dbo].[TableOne] FROM  [ServerName].[Database].[Account].[TableOne]; 
GO
SELECT * INTO [dbo].[TableTwo] FROM  [ServerName].[Database].[Account].[TableTwo]; 
GO
SELECT * INTO [dbo].[TableTHREE] FROM  [ServerName].[Database].[Account].[TableTHREE]; 
GO
SELECT * INTO [dbo].[TableTHREE] FROM  [ServerName].[Database].[HumanResource].[TableTHREE]; 
GO
SELECT * INTO [dbo].[TableOne] FROM  [ServerName].[Database].[HumanResource].[TableOne]; 
GO
SELECT * INTO [dbo].[TableTwo] FROM  [ServerName].[Database].[HumanResource].[TableTwo]; 
GO

此脚本的问题

1) 因为你想从多个模式中获取表 目标数据库中的模式可能有一些重复的表 如我在上面的示例中所示的名称。

2) 具有引用其他列的列的表 必须在包含引用列的表之后创建表 已创建。

【讨论】:

    【解决方案2】:

    我想你不会找到这样的工具。您需要不是很常见的自定义功能。因此,我想没有人会为它制作工具。你的场景不是很清楚。我会看到三种移动方式。

    1. 如果这种合并只发生一次,那就很容易了。您可以以CREATE SQL 语句的形式导出表,包括数据。您可以使用this tutorial 在 SQL Server 中执行此操作。您应该为每个表执行此操作,然后运行这些脚本以将表创建到新架构中。

    2. 如果你想定期合并目标数据库中的数据库内容,你必须创建一个SQL Server Job。这必须执行自定义脚本,从源数据库中提取数据并将它们推送到目标数据库。

    3. 如果您想在一个大的data warehouse 中连接多个较小的数据库,那么您正在寻找Business Intelligence Development Studio。您可以使用它创建一个OLAP cube,将来自大数据仓库中较小数据库的数据连接起来。

    希望我能帮上忙!

    【讨论】:

      猜你喜欢
      • 2019-11-16
      • 2017-12-11
      • 1970-01-01
      • 2019-05-23
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多