我遇到的情况是我有一个使用多个SQL Server 2008数据库的应用程序(所有数据库都有不同的模式 - 按应用程序功能拆分)。
我现在想将这些模式和数据组合到一个整体应用程序数据库(SQL Server 2008)中。我已经搜索了有关如何执行此操作的帮助,但我看到的所有解决方案都涵盖了从具有相同模式的数据库合并数据。在这种情况下,单独数据库的模式中没有共性 - 所有表都是唯一的。为此,我只想将所有表格和数据合并到一个数据库中,我真的在寻找一种能够帮助我简单轻松地完成工作的工具。
任何人都可以就如何最好地实现这一目标提供一些指导吗?
答案 0 :(得分:0)
我猜你可以创建一个类似这样的脚本......在你的Source数据库中执行以下语句并选择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)具有引用其他列的列的表 必须在包含引用列的表之后创建表 创建
答案 1 :(得分:0)
我想你不会找到这样的工具。您需要不常见的自定义功能。因此,我想没有人会为它制作工具。你的情况不是很清楚。我会看到三种移动方式。
如果这次合并将会发生一次,那么这很容易。您可以以CREATE
SQL语句的形式导出表,包括数据。您可以使用this tutorial在SQL Server中执行此操作。您应该为每个表执行此操作,然后运行这些脚本以将表创建到新架构中。
如果要定期合并目标数据库中的数据库内容,则必须创建SQL Server Job。这将需要执行自定义脚本,这些脚本将从源数据库中提取数据并将它们推送到目标数据库。
如果要在大data warehouse中连接多个较小的数据库,那么您正在寻找Business Intelligence Development Studio。您可以使用它来创建OLAP cube,从大数据仓库中的较小数据库连接数据。
希望我帮忙!